
请教C语言程序设计模拟考题问题。
1)为什么结果是14呢?#defines2+3main(){printf("%d\n",s*4);}2)为什么结果是1呢?main(){unsignedints;prin...
1)为什么结果是14呢?
#define s 2+3
main()
{
printf("%d\n",s*4);
}
2)为什么结果是1呢?
main()
{
unsigned int s;
printf("%d\n",s%2+(s+1)%2);
} 展开
#define s 2+3
main()
{
printf("%d\n",s*4);
}
2)为什么结果是1呢?
main()
{
unsigned int s;
printf("%d\n",s%2+(s+1)%2);
} 展开
2个回答
2009-03-06
展开全部
1.
注意区分一下:
#define s 2+3
和
#define s (2+3)
在这个程序中,#define s 2+3
所以s*4=2+3*4=14
如果是#define s (2+3)
那么 s*4=(2+3)*4=20
对于宏定义,只要原样将他带入计算就可以了,不要主观的加括号
2.
对于无符号数s来说,s和s+1一定是一个为偶数,一个为奇数
所以s%2和(s+1)%2必然一个为0,一个为1
所以s%2+(s+1)%2结果就必然为1了
注意区分一下:
#define s 2+3
和
#define s (2+3)
在这个程序中,#define s 2+3
所以s*4=2+3*4=14
如果是#define s (2+3)
那么 s*4=(2+3)*4=20
对于宏定义,只要原样将他带入计算就可以了,不要主观的加括号
2.
对于无符号数s来说,s和s+1一定是一个为偶数,一个为奇数
所以s%2和(s+1)%2必然一个为0,一个为1
所以s%2+(s+1)%2结果就必然为1了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询