请c语言高手帮我解决问题?

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:40:17
1:c=a++-1的运算顺序,为什么?
2:2=(x=-1)?(y=-1,y+=x+5):(x=7,y=3);是怎么一回事?
3:(!(--x));是怎么一回事?
4:for(i=1;i<=100;i++)
{
x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
print("%d",x);
的输出结果?

第四题的执行过程已经加上,在第四题部分!

第一题:
先计算a-1,然后计算a++,最后将开始计算的a-1的值赋值给c;
例如:a=6,则执行此条语句后a的值为7,c的值为5;

第二题:
?:即条件运算符,是c中唯一的三目运算符。
说明:表达式1?表达式2:表达式3
执行时表达式1的返回值非0则求解表达式2,否则求解表达式3来作为整个条件表达式的值。优先级比关系和逻辑的都低,而且条件运算符的结合方向为“自右至左”的。
注意:这里你的表达式1有一定的问题,怎么可以给一个数字2赋值呢?
写成比较“==”即2==(x=-1)?(y=-1,y+=x+5):(x=7,y=3);后说明如下:
因为x=-1与2不等,故表达式返回值为0,所以求解表达式3即为x和y赋值,故执行此语句后x=7,y=3

第三题:
(!(--x))表示将x的值先减1,然后再求非;下面还是举例说明:
例如b=(!(--x));
如果此时x的值为1,那么执行--后x值变为0,再求非为1,然后将表达式的值赋值给b,即此时的b=1;
如果此时x的值为2(非1的任何值均可),那么--后x=1,求非后x=0,将表达式的值赋值给b,即此时的b=0;

第四题:
结果为28和70;分析如下:
i从初值1开始,首先将i的值赋值给x,然后进入下面的if语句
if(++x%2==0)如果此时x+1的值是2的倍数则继续下一条语句即第二个if语句,否则什么也不做,直接进入下一轮循环
if(++x%3==0)同上,只是判断条件为x+1的值是否为3的倍数
if(++x%7==0)同上,条件改为x+1的值是否为7的倍数,是的话,执行下面的输出语句,输出此时的x值,不是的话继续下一次循环
下面以i=25为例说明:
将i的值赋值给x,此时x=25;
x现在为25,在if语句中要先++再求余,故为26%2,故(++x%2==0)条件成立,所以继续执行下一个if。同理在比先加1,再求余即(26+1)%3,满足(+