1.#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a=11,b=11;
a+=a+=b+=b%=b<<2;
printf(" %d ", a );
system("pause");
return 0;
}
为什么答案是66? 是不是计算过程是
a=a+a=a+b=b%b<<2 然后运算顺序% << + =(右到左)
a=22=22=22=0 ,,a=0;
2.
#include <stdio.h>
#include <stdlib.h>
#define M(a,b) (a)<(b)?( a ) : ( b )
int main(void)
{
int a=4,b=3,c=2,d=4;
printf("%d\n",M(a+b,c+d));
system("pause");
return 0;
}
A.6 B.7 C.13 D.0
为什么答案是 D
作法是不是 呼叫M(a+b,c+d) 找定义define M(a,b) a是a+b
b是c+d 然后 (a+b < c+d) ? (a+b,c+d) 判断否传回c+d == 6