一,标识符
数字,字母,下划线,数字不能做开头。
关键字不能做用户标识符。关键字如下:
C语言关键字共32个:
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
二:整数和实数
八进制以0开头(0-7)
十六进制以0x开头
(1)实行数据的合法形式如下:
2.333e-1就是合法的,且2.333乘以10的负一次方
(2)e前e后必有数,e后必为整
三.运算符及其表达式
1.算数表达式
“/”俩边都是整形的话,结果就是一个整形。3/2的结果就是1。
“/”如果有一边是是小数,那么结果就是就是小数3/2.0的结果就是0.5.
“%”符号请一定要注意是余数,%俩边一定是整数。
2.赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式的值为5,常量不可以赋值。
(1)int x=y=5;错,定义时,不能连续赋值。
(2)int x,y;
x=y=10; 对定义完后可以连续赋值。
(3)赋值的左边只能是一个变量
(4)int x=7.7 ;对,x就是7
(5)float y=7;对,就是7.0、
3.复合的赋值表达式
int a=2;
a*=2+3;运行完成后,a的值是10。一定注意,先在2+3上打上括号。变成(2+3)再运算。
4.自加表达式
++在前先加后用,++在后先用后加
5.逗号表达式
优先级别最低。表达式的数值是逗号最右边的那个表达式的数值 eg:z=(2,3,4)
这时z的值就是4
补充:
(1):空语句不可以随意执行,会导致逻辑错误。
(2):注释不是c语言语句,不占运行时间,没有分号。不可以嵌套。
(3):强制类型转换:
一定是(int)a不是int(a),注意类型上一定有括号的。
注意:(int)(a+b)和(int)a+b的区别。前面是把a+b转型,后面是把a转型再加b.
(4):三种取整丢小数的情况:
int a=1.6;
(int)a;
1/2; 3/2;
6.关系表达式;
(1)表达式的数值只能为1(表示为真),或为0(假);
eg: 9>8这个关系表达式是真的,所以这个表达式的值就是1;
7>9这个关系表达式时假的,所以这个表达式的值就是0;
(2)易错点:int x=1,y=0,z=2; x<y<z这个式子再数学中是错的,而在c语言中是正确的(1<0为假,0,则表达式为0<2,结果就为真,1)
(3)等号 == 赋值=
7.逻辑表达式 (表达式的值只能为1,或0)
(1)共有&&(与) ||(或) !(非)
(2)优先级 !>&&>||
(3)短路现象
(4)表达式x大于0小于10的方法。
(0<x)&&(x<10)表示0比10小。解释:先计算0<x得到的结果为1或0,再用1或0与10比较得到的结果总是真(为1)。
8.条件表达式:
(1)形式:表达式1?表达式2?表达式3
(2)真前假后
(3)当表达式1的数值是非0时,才采用表达式2的数值作为整个运算结果,当表达式1的数值为0时,就用表达式3的数值作为整个的结果。
(4)int a=1,b=2,c=3,d=4,c=5;
k=a>b? c:d>e?d:e;求k的数值是多少?
结果是为5。
四.字符
1.字符的合法形式:“1”是字符串占俩个字节,'1'是字符占一个字节。
“0”的ASCII数值为48,'a'的数值为97,“A”的数值为65.
2.转义字符
(3)char a= 65;
printf(“%c”,a);输出结果:a
printf(“%d”,a);输出结果:65
五.位运算
把十进制转为二进制在转换为十进制
注:0异或1得到1;0异或0得到0.
在没有舍去数据的时候,<<左移一位表示乘以2; >>右移一位表示除以2.