上海电信积分兑换话费:C语言问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/02 01:29:17
老鸟们帮帮我看下下面这几个题目是怎样算出来!
问题1:
main()
{ int a=-10,b=-3;
printf("%d,",-a%d);
printf("%d,",(a-b,a+b));
printf("%d\n",a-b?a-b:a+b);}
程序结果是:1,-13,-7
为什么程序结果是这样的?
为什么-a%d值为1呢,能说清楚点吗?

-a%d 先计算-a('-'的优先级比'%'高) 结果为10 然后与b求余
求余规则:若参加运算的操作数不是整数,先将其四舍五入成整数再运算;若参加运算的数含有负数,则先取绝对值,再求余,结果的符号与被除数符号相同
被除数-a为10,正数,所以结果为正.

后面两个,上楼说的很对.我就不重复了.

-a%d先计算a%d为-1然后再加一个-号所以为1
(a-b,a+b) ,号运算的值为后面的值,所以为a+b=-13
a-b?a-b:a+b ?:运算是先算a-b不为0,所以取a-b=-7的值,如果为0则取a+b的值

求余运算要求参与运算的两个数都是整型,不能为其他类型,当运算量为负数的时候,结果的符号根据机器类型定,在turo c中,结果的符号与被除数符号相同