大家好,欢迎来到IT知识分享网。
1、数据类型
常量分类:
常量 = 直接常量+符号常量 直接常量 1、整形常量(10,-15) 2、实型常量(12.4,12.0) 3、字符常量(‘A’,’b’) ‘\n’,‘\101’ ‘\0’,‘2’ 4、字符串常量(“abc”) 符号常量 #define PI 3.1415
数据类型:
基本数据类型:(填空选择) 整型(int,short,long) 字符型 (char) 实型 (double,float) 构造类型 数组,结构体,联合体,枚举 指针类型 空类型 void 自定义类型 typedef
整型常量:
八进制以0开头 0123(正确) 0128(错误 八进制没有8的位) 十六进制以0x 或者0X开头 整数的数值在内存中以补码表示 数据在内存中的存放位置是高字节放在高地址的存储单元中,低字节存放在低地址的存储单元中 指数形式(科学计数法) 12.34e3 = 12.34 * 10^3; 注意 e或E之前必须有数字,且e或E后面必须为整数 分类 Signed(有符号)默认 Unsigned(无符号) int a = -2 -2 三码分析 1000 0000 0000 0010(原码) 1111 1111 1111 1101(反码) 1111 1111 1111 1110(补码) 实际存储的 printf(“%d”,a); -2 有符号输出,最高位的1代表的是符号位负号 printf(“%u”,a); 65534 无符号输出 把最高位的1也参与运算 int TC或者BC 2个字节 VC 4个字节 32位 short 1 or 2个字节 long 4个字节 double 8个字节 char 1个字节 float 4 这里我们可以通过关键字 sizeof来计算各个类型变量占的字节数
转义字符:
\b 退格 \\ 反斜杠 \a 鸣铃 \’ 单引号 \r 回车 \”双引号 \n 回车换行 识记 ‘A’ 以Ascall码存储的 65 ‘a’ 97 ‘\n’ 10 大小写转换就差32 把小写字母转化位大写字母 ‘A’ = ‘a’-32 \ddd 1-3位八进制数表示的字符 d取[0,7] \xhh 1-2位十六进制数表示的字符 h取 [0-9,A-F] ‘\x12’,’\x1’ ‘\101’ = ? 101 = 1*64+1 = 65; 101 八进制 1*8^2+1*8^0 = 65 Ascall 查表为 字符A 所以’\101’ = ‘A’ = 65 “012\1098”; 字符串是以字符构成的,所以看到上述字符串前三个字符分别是’0’,’1’,’2’. 遇到反斜杠\判断是\ddd还是\xhh,由于\xhh会显示的给出x,同时字符串中该字符没有x, 所以只能是\ddd,d只能是八进制数,所以第三个d由于是9,所以停止结合。 该字符就是’\10’.就是ascall值为8对应的字符。此题很重要,需要重点掌握。
数据简单输出:
%d 以十进制有符号输出整形数据 %f 输出float %u 输出unsigned %p 输出变量的地址 %s 输出字符串 %c 输出char %x 以十六进制无符号输出整形数据 %o 以八进制无符号输出整形数据
2、运算符 | 表达式
单目 只带一个操作数的运算符 ++,--, i++,i-- 双目 2个操作数的运算符 +,- x+y % / 三目 3个操作数 ? : 赋值表达式 ,表达式也有值, 被赋给变量的值就是赋值表达式的值 int a; (a=5) 5就是这个表达式的值 赋值语句 任何表达式在末尾加上分号构成表达式 如 int x,a,b,c; x = 8; a=b=c=3; a=b=c=3等价于 a=(b=(c=3))) 从右向左 强制转化 float x=3.5,y=2.1 (int)x+y = 3+2.1 = 5.1 (int)(x+y) = (int)(5.6) = 5 A%B 取余操作 A和B必须是整数 a%b = r r belong to [0,b-1] 优先级 类型强制转换 > 算数运算符 > 赋值运算符 int a = (int)2.5*4+5; 所以 a = 2*4+5 = 13 i++,++i,i--,--i操作 (1)i++,i-- 先取值,然后i加1或减一 int i=3; int a = i++,b = i--; printf(“a=%d,b=%d,i=%d”,a,b,i); 过程:a先取i的值赋值给a 那么 a = 3, i先取值操作 i然后加一为4; b取i的值给b赋值 那么 b = 4,i先取值操作 i然后减一为3; (2)++i,--i 先i加1或减一,后取值 int i=3; int a = ++ i,b = -- i; printf(“a=%d,b=%d,i=%d”,a,b,i); 过程: i先加一为4; a后取i的值赋值给a 那么 a = 4 i先减一为3; b后取i的值给b赋值 那么 b = 3,
算术类型转换规则:
char ch; int i; float f; double d; ch/i+f*d-(f+i) 数据类型 //低字节类型的数据会转换成高字节的数据类型 所以最后该数值是double类型的 左移,右移操作 a<<b = a*(2^b) 数值变大 a>>b = a/(2^b) 数值变小 2 10 10000 = 2<<3 = 2*2^3 = 16 3 11 11000 = 16+8 = 24 3<<3 = 3*2^3 = 3*8 = 24 16 10000 100 = 4 16>>2 = 16/2^2 = 4 2<<3 = 2*2^3 = 16 16>>3 = 16/(2^3) = 2 Tips:移位操作运算符 < 算术运算符 int a = 1<<2+3; 等价于 a = 1<<5 = 32 而不是 a = 4+3 = 7
sizeof是运算符 sizeof(int) == 4 sizeof(char) == 1 复合运算符 int a = 3; a+=2; a = a+2; a + = a + = 6; 从右向左 a+=6 等价于 a = a+6 所以 a = 9; 表达式的值也是9 a + = 表达式的值 等价于 a = a+表达式 = 9+9 = 18 所以 a = 18; 运算符的优先级最高的是() 最低的是逗号(,) int a; “((a=4*5,a*2),a+6)” 表达式的值 表达式的值从左向右执行,最后一个式子的值是表达式的值 a初始化赋值为20 虽然进行了a*2的操作,但是没赋值操作,a的值还是20 然后a+6操作是表达式的值。所以表达式的值是26
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/161355.html