小阿妞 发表于 2015-7-10 14:51:54

C语言求助!谢谢解答!

这个a*=a+1与这个a*=(a+1)是相等的么?

哥斯拉不说话 发表于 2015-7-10 16:21:11

按说应该相等,不明白怎么会有这样的选项

战旗美如画 发表于 2015-7-10 16:25:21

要具体情况具体分析一下吧。

nin98 发表于 2015-7-13 12:38:49

a*=a+1 //a=a*a+1
a*=(a+1)//a=a*(a+1)

小阿妞 发表于 2015-7-13 13:59:08

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)*

nin98 发表于 2015-7-13 14:35:19

小阿妞 发表于 2015-7-13 13:59
你错了,
               a*=a+1应该是这样



sorry,忘了*=的优先级比 = 还低,刚拿他当 * 的优先级看了

nin98 发表于 2015-7-13 14:42:16

#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

小阿妞 发表于 2015-7-13 15:09:19

nin98 发表于 2015-7-13 14:35
sorry,忘了*=的优先级比 = 还低,刚拿他当 * 的优先级看了

没事,我也错了{:1_1:}

nin98 发表于 2015-7-13 15:13:38

小阿妞 发表于 2015-7-13 15:09
没事,我也错了

{:9_240:}

lark 发表于 2015-7-20 12:48:35

插入代码:
#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]
查看完整版本: C语言求助!谢谢解答!