开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第N天,点击查看活动详情
B. 1,3,2 C. 3,2,1 D. 1,3,3
这道题目就和有些人刚开始写代码的时候,喜欢吧if语句的括号省略掉,这就导致代码的可读性变差,这时候就需要我们来仔细寻找if和else
#include <stdio.h> int main() { int a=1,b=2,c=3,d=0; if(a == 1 && b++==2) { if(b!=2||c--!=3) { printf("%d,%d,%d\n" ,a,b,c); } else { printf("%d,%d,%d\n" ,a,b,c); } } else { printf("%d,%d,%d\n" ,a,b,c); } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 经过调整之后代码的可读性变高了,然后就可以做题了
看第一个if,当两个都为真的时候才会进下面,a初始化是等于1的,为真,b++是先用b比较再进行++,所以也是为真的,所以就会进入到第二个if语句,然后我们再进行判断
第二个if的语句是用逻辑或连接起来的,所以某一边为真即为真,前面已经b++了,所以b现在为3,所以b!=2,所以为真,逻辑或 当第一个表达式为真是不会执行第二个表达式的所以会直接打印abc的值
所以这道题只有b在初始化以后有改变,所以这道题的答案为1 3 3 ,所以选D
💦第五题 若有定义语句: int a=10 ; double b=3.14 ; 则表达式 ‘A’+a+b 值的类型是()
A. char B. int C. double D. float
这道题不同类型的表达式进行计算的时候会有类型的提升,表示范围小会自动提升到范围大的类型,char占一个字节,int占四个字节,double占八个字节,所以char类型和int类型会自动提升到double类型。
所以这道题选C
💦第六题 在int p[][4] = {{1}, {3, 2}, {4, 5, 6}, {0}};中,p[1][2]的值是()
A. 1 B. 0 C. 6 D. 2
这个题是定义了一个数组并且进行初始化,这里是个四行四列的数组,而且数组并没有完全初始化,所以没有初始化的地方默认是0,所以我们可以把数组写出来
1 0 0 0
3 2 0 0
4 5 6 0
0 0 0 0
所以p[1][2]表示第二行第三列的元素
所以这道题的答案是0 选B
💦第七题 选择表达式 11|10 的结果(本题数值均为十进制)()
A 11 B 10 C 8 D 2
这道题是计算表达式,将11 按位或 10 ,我们先要将十进制转换为二进制
11: 0000 1011 10: 0000 1010
按位或的计算方式为 有1则1,无1则0 所以
11|10 : 0000 1011
转换为十进制的话是 11
所以这道题的答案是 11 ,选A
💦第八题 int fun(int a){ a^=(1<<5)-1; return a; } 1 2 3 4 fun(21)运行结果是()
A 10 B 5 C 3