讲课开始辽:
了解符号优先级和结合性真的很重要。
了解符号优先级和结合性真的很重要。
了解符号优先级和结合性真的很重要。
#include
int main(){
int x = 5;
int y = 5;
int z = 5;
printf("%d\n", x%=y+z);
return 0;
}
这题就是对取模和赋值符号的理解;5%(5+5)=5。
#include
int main(){
int a = 3, b = 3, c = 1;
c = 5 ? a++: b--;
printf("%d\n", c);
return 0;
}
这题考三目运算符,自增自减符号的性质;5为真,c=a++=3。
#include
int main(){
int a = 1,b = 10;
do{
b -= a;
a++;
}while(b-- < 0);
printf("a = %d,b = %d\n",a,b);
}
考察do-while循环、自增自减;当b–即b<0时跳出循环;
第一步:b-=a 即 b=10-1=9, a++ a=2;(b–=9>0,跳出循环,b=8,然后没有下一步了)
#include
int main(){
int x,y;
for(y = 1; y < 10;){
y=((x = 3 * y, x + 1), x - 1);
}
printf("x=%d, y=%d\n",x,y);
return 0;
}
考察点:逗号运算符从左至右
第一步:x=3 * y=3,x+1(x依旧为3),y=x-1=3-1=2;y=2<10
第二步:x=3 * y=6,(同上),y=x-1=6-1=5;y=5<10
第三步:x=3 * y=15,(同上),y=x-1=15-1=14;14>10(跳出来辽
#include
int main(){
int x = 10,y = 10,i;
for(i = 0; x > 8; y = ++i)
printf("%d,%d",x--,y);
return 0;
}
考察点:for循环、自增自减
第一步:x=10>8,打印10,10,x=9,y=++i=1,i=1;
第二步:x=9>8,打印9,1,x=8,y=++i=2,i=2;
第三步:x=8(跳出循环)
#include
int main(){
int i,sum;
for(i = 1;i < 5; i++){
sum += i;
}
printf("%d\n",sum);
return 0;
}
考察点:变量初始化
已知 chara[]=“Beijing”;, 则数组a所占的储存空间是 8 个字节
考点:字符串字面量" "中字符个数+1为数组所占的储存空间,因为还要数组后加上一个用来标志字符串末尾的额外字符(空字符)。
结果 abcdef
#include
#include
int main(){
char str[10] = "12345";
gets(str);
strcat(str,"def");
printf("%s\n",str);
return 0;
}
考察点:gets,strcat
使用gets输入的值覆盖了之前的12345;
strcat将“def”接在了字符串字面量str后面。
#include
struct person{
char name[10];
int age;
}classes[10] = {{"LiMing",29},{"HongGang",21},{"WangFang",22}};
int main(){
int ans;
/*
A. ans = classes[0]->age + classes[1]->age + classes[2]->age;
printf("%d\n",ans);
B. ans = classes[1].name[0];
printf("%d\n",ans);
C. ans = classes[1].name[5];
printf("%d\n",ans);
D. ans = classes->name[5];
printf("%d\n",ans);
*/
return 0;
}
考察点:ASCII码、结构体、指针
A. ->用于指针的访问 wa,应该用 . 连接
B. 对应字母H的ASCII码为72 ra
C. 对应字母a的ASCII码97不为72 wa
D. Classes[0].name[5]对应字母g的ASCII码为103 wa
请输出下面每一个prinf的值:
(很奇怪,复制粘贴代码就出错,只能上图了)
位运算用补码进行运算!
计算结果还要从补码转换回原码
(数值变化加粗标记)