关于C语言笔试的几道题
发布网友
发布时间:2022-04-24 21:03
我来回答
共1个回答
热心网友
时间:2023-10-11 04:20
printf(..... B*2)
而B是什么?是(A<A+2)-2
那么也就是(A<A+2)-2*2 而你的2*((A<A+2)-2) 人家又没有破号,你自己给他加一个上去,这能没问题吗?这没什么原理,是规定,是逻辑,想不通没关系,这种样的宏初级编程用不上,等你到达高级程度了也就自己会理解的了。
展开后是(A<A+2)-2*2 并不是2*((A<A+2)-2)
乘法当然比减法优先了,先乘后减。。。。。。。
第一题
首先定义了宏 A 他的值是10 实际上可以当成int a=10;
然后#define B (A<A+2)-2
实际上也就是#define B (10<10+2)-2
首先算术运算符比关系运算法优先高就变成了 (10<12)-2,然后10<12条件是真,为1,变成了 1-2 由于printf("%d",B*2); 又变成了 1-2*2 结果1-4=-3;
第二题
这个二维数组分解开来就是 a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4,a[2][0]=5,a[2][1]=6, 这个二维数组是三行,二列,行的下标有0,1,2,列的下标有0,1 你的a[1][2]越界了。
第三题并不是单纯的用box 的长度去和boss比较,而是acsii表里的值去减,首先 b和b比,相等,会自动看下一个,o和o比,任然相等,然后x和s比,在acsii里x是120而s是115,所以box大,至于boss最后多出的s就不管了。