C语言求助!谢谢解答!
这个a*=a+1与这个a*=(a+1)是相等的么? 按说应该相等,不明白怎么会有这样的选项 要具体情况具体分析一下吧。 a*=a+1 //a=a*a+1a*=(a+1)//a=a*(a+1) nin98 发表于 2015-7-13 12:38
a*=a+1 //a=a*a+1
a*=(a+1)//a=a*(a+1)
你错了,
a*=a+1应该是这样
‘+’的优先级大于‘=’
所以先执行a+1,在执行a=a*(a+1)* 小阿妞 发表于 2015-7-13 13:59
你错了,
a*=a+1应该是这样
sorry,忘了*=的优先级比 = 还低,刚拿他当 * 的优先级看了 #include<stdio.h>
int main()
{
int a=5;
printf("%d\n",a*=a+1);
a=5;
printf("%d\n",a*=(a+1));
return 0;
}
一样的啊,都是 输出 30 nin98 发表于 2015-7-13 14:35
sorry,忘了*=的优先级比 = 还低,刚拿他当 * 的优先级看了
没事,我也错了{:1_1:} 小阿妞 发表于 2015-7-13 15:09
没事,我也错了
{:9_240:} 插入代码:
#include<stdio.h>
/*如果楼主遇到类似的问题,可以自己先上机code下;*/
void fun1 (int a){
a*=a+1;
printf("a*=a+1==%d;\n",a);
}
void fun2 (int a){
a*=(a+1);
printf("a*=a+1==%d;\n",a);
}
int main(void){
int a=0;
printf("input with a:");
scanf("%d",&a);
fun1(a);
fun2(a);
}
运行结果
input with a:2
a*=a+1==6;
a*=a+1==6;
请按任意键继续. . .
页:
[1]