1、整型常量可以带正负号,也可以不带。实型数都有符号
2、二进制:B 八进制:O 十进制:D 十六进制:H
3、float型:单精度浮点型,内存中占四个字节,有效位为7位(有一位符号位)
4、double型:双精度浮点型,内存中占8字节,有效位16位
5、“a”的ASCII码97,“A”的ASCII码65
6、转义字符:“\t”-制表,“\n”-回车换行,“\b”-退格,“\r”-回车,“\f”-走纸换页,“\101”-‘A’
7、关于表达式的计算顺序
通常单目、三目和赋值运算符(包括复合赋值)、条件表达式是右结合性,就是在表达式中最右边的操作最先执行,然后从右到左依次执行。类似地,具有左结合性的操作符其他都是左结合性。
(1)对于三目运算 ,在C中与它优先级相同的只有它自己,因此只有连续的才会体现出它的右结合性,即a?b:c?d:e中,根据右结合性可知应理解为a?b:(c?d:e)。显然,上述问题中是体现不出这种结合性来的。
(2)赋值语句如下:
int a,b=1,c=2;
a=b=c;
c先赋值给b,然后b在赋值给a,最终a的值是2。
(3)条件表达式:a?b:c表示如果a为真,则表达式值为b,如果a为假,则表达式值为c
条件语句:
if(a>b) max=a;
else max=b;
可用条件表达式写为
max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a赋予max,否则把b赋予max.
a>b?a:c>d?c:d
应理解为
a>b?a:(c>d?c:d)
(4)逗号运算符的求值顺序是从左到右顺序求值,并且整个表达式的值等于最后一个表达式的值,注意逗号','还可以作为函数参数的分隔符,变量定义的分隔符等,这时候表达式的求值顺序是没有规定的!
判断表达式计算顺序时,先按优先级高的先计算,优先级低的后计算,当优先级相同时再按结合性计算。
8、按位运算符是一个的如|、&,逻辑运算符是两位的如:||、&&
9、5%-3结果为2,因为商-1余2;-5%3结果为-2,因为商-1余-2;-5%-3结果为-2,因为商1余-2
10、自增、自减运算符(++、--)
前缀形式:如++i,先加1,再参与其他运算
后缀形式:如i++,先参与其他运算再对变量自动加1
#include
int main()
{
int i=3,j=10,m,n,p,q;
m=++i; //先执行 i=i+1,再将i值赋给m
n=i++; //先将i值赋给n,再执行i=i+1
p=--j; //先执行 j=j-1,再将j值赋给p
q=j--; //先将j值赋给q,再执行j=j-1
printf("i=%d,m=%d,n=%d\n",i,m,n);
printf("j=%d,p=%d,q=%d\n",j,p,q);
}
注意:(1)++和--只能用于变量,不能用于常量和表达式
(2)++和--的运算优先级是一样的,结合方向是自右向左,例如:-k++可以被看做-(k++),如果k的初值为3,整个表达式的值为-3,k的最终结果为4
11、计算开方:sqrt函数 计算sin:sin(x) 计算x的y次方:power(x,y) 计算e的x次方:y = exp(x)
产生一个随机数并返回这个数:rand()
12、逻辑运算符:有0与(&&)为0,有1或(||)为1。单目运算符(!)优先级>双目运算符(&&>||)。
例题:判断某一年是否是闰年。条件如下:①能够被4整除,但是不能被100整除②能够被400整除
则表达式如下:
(year%4==0)&&(year%100!=0)||(year%400==0)
13、优先级:单目运算符(!、取反符、自加自减、*指针、&取地址)(结合方向自右向左) > 算数运算符(*/%、+-、左移右移)> 关系运算符 > 判等判不等 > 按位运算符(&、^、|)> 逻辑运算符(&&、||)> 条件运算符(结合方向自右向左)> 赋值运算符(结合方向自右向左)> 逗号运算符
设有int a=10,b=20,c=30,执行a=--b<=a||a+b!=c后,a和b的值是多少
根据上面规则,先计算--b=19,在计算19<=a,结果为0,再计算a+b!=c,即19!=30结果为1,接着计算0||1,结果为1,把这个值赋给a,则最终的结果为a=1,b=19