C语言学习1

change案例

#include <stdio.h>

int main()
{
	int price = 0;
	
	printf("请输入金额(元)");
	scanf("%d",&price);
	
	int change = 100 - price;
	
	printf("找您%d元\n",change);
	
	return 0;
 } 
  1. 程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
  2.  int main() 是主函数,程序从这里开始执行。
  3.  return 0; 终止 main() 函数,并返回值 0

1)int price = 0;

这一行,定义了一个变量。变量名为price,类型是int,初始值为0.

price = 0 是一个式子,“=”表示赋值运算符

a = b :将b的值赋给a

a = b 和 b = a 的意思完全相反

2) scanf("%d",&price);

要求scanf这个函数读入下一个整数,读到的结果赋值给变量price

小心price前面的&

1.注释(两种

// 单行注释 
/* 
 多行注释
 多行注释
 多行注释
 */

/* */ 这种格式的注释可以单行或多行。

2.变量:

1).变量的定义

变量是一个保存数据的地方

变量定义的一般形式:<类型名称><变量名称>;

int price;

int price,amount;

int price = 0,amount = 100;

int pricr,amount = 200;   // 有效,但是这种格式很糟糕

(多个变量定义,变量之间用逗号隔开)

变量的名字,叫“标识符” 如 price

  • 标识符的构造规则:只能由字母、数字和下划线组成,数字不能出现在第一个位置,C语言中的关键字(或者保留字)不可以用做标识符
  • 区分大小写
  • 无效的名称:$Z]  、2cat、Hot-Tub、tax rate、don't......
2). 初始化

定义变量赋值时,就是“初始化”,虽然C语言中并没有强制要求所有的变量都在定义时初始化,但是所有变量在第一次被使用(出现在赋值运算符的右边)之前应该被赋值一次

3.常量:不变的量是常量

#include <stdio.h>

int main()
{
	const int AMOUNT = 100;
	int price = 0;
	
	printf("请输入金额(元)");
	scanf("%d", &price);
	
	int change = AMOUNT - price;
	
	printf("找您%d元\n", change);
	
	return 0;
 } 
const:使用 const 前缀声明指定类型的常量
  • const 数据类型 常量名 = 常量值;
  • const是一个修饰符,加在int的前面,用来给这个变量加上一个const(不变的)的属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了
  • const int AMOUNT = 100;

AMOUNT——常量

  • 如果试图对常量做修改,把它放在赋值运算符的左边,就会被编译器发现,指出为一个错误

4.转义序列

用于代表难以表示或无法输入的字符

\t  ——  Tab键(水平制表符), \b  ——  Backspace键(退格键), \n —— 换行     \f   ——换页

\r  ——  回车     \v  ——  垂直制表符    \\   ——  反斜杠\      \ '   ——  单引号   \ "   ——  双引号

\?  —— 问号   \0oo  —— 八进制值(oo必须是有效的八进制数,即每个o可表示0~7中的一个)

 \xhh  —— 十六进制值(hh必须是有效的十六进制数,即每个h可表示0~f中的一个)

/* escape.c  -- 使用转义序列  */
#include <stdio.h>
int main()
{
	float salary;
	
	printf("\aEnter your desired monthly salary:");
	
	printf(" $_______\b\b\b\b\b\b\b");     // $前面有一个空格,7个下划线_,7个\b
	
	scanf("%f",&salary);
	
	printf("\n\t$%.2f a month is $%.2f a year.",salary, salary * 12.0);
	printf("\rGee!\n");
	
	return 0;
 } 

Enter your desired monthly salary:$_1500___

Gee!    $1500.00 a month is $18000.00 a year.

 

5.位、字节和字——计算机数据单元或存储单元

位(bit)——最小的存储单元,可储存0或1

字节(byte)——常用的计算机存储单位,1字节均为8位,1位可表示0或1 ,8位就有256(2的8次方)种可能的0、1的组合

字(word)——设计计算机时给定的自然存储单位。字长8位-->16位-->32位-->64位。计算机字长越大,其数据转移越快,允许的内存访问也更多。

6.浮点数类型  %f(小数)  %e(指数形式)

  • -3.16E7 (或-3.16E+7)—— -3.16 x 10^{7}  (7称为10的指数)
  • .8E-5   —— 0.8 x 10^{-5}
  • 不要在浮点型常量中间加空格:1.56 E+12(错误!)
  • C99标准添加了一种新的浮点型常量格式——用十六进制表示浮点型常量,即在十六进制数前加上十六进制前缀(0x或0X),用p和P分别代替e和E,用2的幂代替10的幂(即,p计数法)。例如:  0xa.1fp10     —— 0xa 十六进制a等于十进制10, .1f是1/16 + 15/256(十六进制f等于十进制15),p10是2^{10}或1024。                                                                   0xa.1fp10 表示的值:(10 + 1 / 16 + 15 / 256)x 1024  (即 十进制10364.0)
  • 浮点数类型:float(4字节)、double(8字节)、long double(16字节)
  • printf()函数使用%f转换说明打印十进制记数法的float和double类型浮点数,用%e打印指数计数法的浮点数。
  • NaN —— 特殊的浮点值(not a number) 

7.显示进制

0前缀表示八进制数,0x或0X前缀表示十六进制数 。如:32、040、0x20分别以十、八、十六进制表示同一个值。l或L前缀表明该值是long类型,ll或LL前缀表明该值是long long类型。

进制显示数字,使用 %d;

进制显示数字,使用 %o;

十六进制显示数字,使用 %x;

另外,要显示各进制数的前缀0、0x和0X,必须分别使用 %#o、%#x、%#X

/* bases.c -- 以十进制、八进制、十六进制打印十进制数100  */
#include <stdio.h>
int main() 
{
	int x = 100;
	
	printf("dec = %d; octal = %o; hex = %x\n", x, x, x);
	
	printf("dec = %d; octal = %#o; hex = %#x\n", x, x, x);
	
	return 0;
 } 

dec = 100; octal = 144; hex = 64
dec = 100; octal = 0144; hex = 0x64

8.整数类型

  • 注:除了unsigned类型,其他的均是有符号类型
  • int类型
  • short int / short 类型,占用的存储空间可能比int类型少,较数值
  • long int /  long  类型,占用的存储空间可能比int类型多,较数值
  • long long int / long long 类型(C99标准加入)占用的存储空间可能比long类型多,更大数值,至少占64位
  • unsigned int  / unsigned  类型,只用于非负值 ,适合用于计数。例如,16位(16位即2字节)unsigned 允许的取值范围是0~65535 (2^{16} = 65536),16位int允许的取值范围是 -32768 ~ 32767(2^{15} = 32768)
  • short long ......

9.char类型(字符型)%c——用于储存字符(字母或标点符号),也可储存整数

计算机使用数字编码来处理字符,即特定的整数表示特定的字符。美国最常用的编码是ASCII编码

char grade = 'A';   // 在ASCII中,整数65代表大写字母A

char grade = 65;  // 对于ASCII,这样做没问题,但这是一种不好的编码风格

最好使用字符常量,而不是数字代码值

char broiled;     // 声明一个char类型的变量

broiled = 'T';     // 为其赋值,正确

broiled = T;       // 错误!此时 T是一个变量

broiled = "T";    // 错误!此时的 "T" 是一个字符串

    printf("Hello!\007\n");   // Hello!
    printf("Hello,I am \" Anny \".\n");    // Hello,I am " Anny ".

/* charode.c--显示字符的代码编号 */
#include <stdio.h>
int main()
{
	char ch;
	
	printf("Please enter a character.\n");
	
	scanf("%c",&ch);
	
	printf("The code for %c is %d.\n", ch, ch);
	
	return 0;
}

Please enter a character.
A
The code for A is 65.

10.  _Bool类型

1——true     0——false

占用1位存储空间

11. 复数类型和虚数类型

通过关键字_Complex 、 _Imaginary 和 浮点类型的关键字组合 (如,dou ble _Complex类型)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值