change案例
#include <stdio.h>
int main()
{
int price = 0;
printf("请输入金额(元)");
scanf("%d",&price);
int change = 100 - price;
printf("找您%d元\n",change);
return 0;
}
- 程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
- int main() 是主函数,程序从这里开始执行。
- 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 (7称为10的指数)
- .8E-5 —— 0.8 x
- 不要在浮点型常量中间加空格: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是或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 ( = 65536),16位int允许的取值范围是 -32768 ~ 32767( = 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类型)