C语言考试笔记
https://www.onlinegdb.com/
常用的数学函数:
求几次方,开根号:
//c = pow((a * a + b * b), 0.5);
求指数:
//a = exp(1);e^1
求ln:
//a = log(log(103.5+2));
求log10( ):
log10();
类型转换:
下面表达式计算中,哪些地方会发生类型转换?
2.5+2*7%2/4
这个表达式先运算乘除之类的,后加减2*7=14,14对2求余=0,0/4=0,2.5+0=2.5;
10/(5*3)
这个表达式里面都是int类型,先算括号里面的,5*3=15,10除以15,因为是int类型,结果比一小,所以结果为0;
如果换成下面这样:
10.0/(5*3) 或者 10/(5.0*3)
只要分子或者分母有一个是小数,那么就用double(floafloat)类型运算,结果就是0.666667;
16.00 = =a/2+b*x/y+1/2; 因为a为int类型,a/2等于9/2=4,1/2=0;所以16.00 = =4+2*x/1.1+0,x = (16-4)x1.1÷2 = 6.6
转义字符:
奇葩表达式:
(++x,y++) 这叫逗号表达式,里面含2个表达式,表达式的最终值用最后一个表达式的结果。而y++先printf,再自加,所以输出 3,z+2也输出3
这个while()里面是一个赋值语句,如果循环里没有跳出的语句比如break
,那么这个while就一直为真,是死循环。
首先,a=a+2,a的值变为12,y=a+0=12,打印出来,此时y小于20,while(a=14)把a赋值为14,再进行下一个循环。
a=a+2,a=14+2=16,y=a+y=14+12=26,打印出来,y大于20,跳出循环。
这个char里面是 \n 1 2 3 \ \0
strlen是这个数组长度,这个char数组里面有5个元素(不包括\0),所以是5。一个char是一个字节,sizeof包括了\0,所以是6。对于这种定义的时候没有确定数组长度的是这样。strlen 统计 \0 之前所有字符的个数。sizeof 计算的是变量的大小,不受字符 \0 影响.但是对于确定了长度的比如ch[5]=“ngm",
因为已经确定了长度是5,所以strlen是3,sizeof是5。
实参和形参:
p1是地址,*p1是地址的内容,a=p1==&m,p1的地址是否等于m的地址,如果相等,则a=1,否则a=0