注册 登录
编程论坛 C语言论坛

求下面程序分析

zf2428 发布于 2020-01-23 16:02, 2865 次点击
#include<stdio.h>
main()
{
    int a=12,n=5;
    a+=a;
    printf("a=%d\n",a);
    a*=2+3;
    printf("a=%d\n",a);
    a%=(n%2);
    printf("a=%d\n",a);
}
新手入门,看书的题目不过没解析,看了书还是有点懵嘿嘿,求认识大佬指教
10 回复
#2
叶纤2020-01-23 17:20
#include<stdio.h>
main()
{
    int a=12,n=5;
    int a1,a2,a3;
    a1=a2=a3=a;  
    printf("a=%d\n",a1+=a);
    printf("a=%d\n",a2*=2+3);
    printf("a=%d\n",a3%=(n%2));
}
//个人感觉这样写比较好你那样写a值都变了,
你哪地方不明白?像你写的a+=a;相当于a=a+a;
a*=2+3  相当于a=a*(2+3)
a%=(n%2)相当于a=a%(n%2)
#3
叶纤2020-01-23 17:36
还有你看的什么书?难道😳出书的人没考虑过a的可扩展性吗?main()这种写法也不规范应int main(void)  或int main()才是

[此贴子已经被作者于2020-1-23 17:39编辑过]

#4
zf24282020-01-24 15:56
回复 3楼 叶纤
这个main()前面是我自己没有写void,我以前都没怎么注意main前面的那个,谢谢指点,我是新学者学到了
#5
zf24282020-01-24 16:25
回复 2楼 叶纤
只有本站会员才能查看附件,请 登录
这个是书上的原题,我刚才在前面加了void却运行不了了,我感觉是我的教材错了,这本书还是学校发的
#6
zf24282020-01-24 16:25
回复 2楼 叶纤
只有本站会员才能查看附件,请 登录
这个是书上的原题,我刚才在前面加了void却运行不了了,我感觉是我的教材错了,这本书还是学校发的
#7
叶纤2020-01-24 16:30
以下是引用zf2428在2020-1-24 15:56:29的发言:

这个main()前面是我自己没有写void,我以前都没怎么注意main前面的那个,谢谢指点,我是新学者学到了

喂喂回来,void  main()更不能写啊要用int啊
void main这种写法c标准都没承认过
main这种写法是c89标准上的也是说是是30年前的东西了,咱也是2020年的人了用啥古董啊,让你裹小脚你也不会同意的是不?

  int main(void)这个很标准
int main()在cPP上很标准c上也可以用
#8
zf24282020-01-24 16:33
回复 2楼 叶纤
我之前就是那几个a*=(2+3),和a%=(n%2)这两个语句运行结果感觉不对我自己算不出和运行结果一样,让我怀疑语句到底是怎么算的,自我的不确定,这教材让我感觉有点坑,嘿嘿,谢谢你啦
#9
zf24282020-01-24 16:35
回复 7楼 叶纤
哦哦,原来如此,好
#10
zf24282020-01-24 16:43
回复 7楼 叶纤
嘿嘿,我再重新看了那个程序懂了懂了,嘿嘿,谢谢,那个结帖啦,感觉这程序好像简单了我自己数学不好,嘿嘿,你下面写不要专家分是不是结帖的那个分送给你,我还是学到了很多
#11
叶纤2020-01-24 16:55
以下是引用zf2428在2020-1-23 16:02:37的发言:

#include<stdio.h>
main()
{
    int a=12,n=5;
    a+=a;                                //  a=12+12。             此时a为24
    printf("a=%d\n",a);
    a*=2+3;                   //因为值是单向流的所以此时a=24*(2+3)  此时a为120
    printf("a=%d\n",a);
    a%=(n%2);                                // a=120%(5%2)                   此时a为0
    printf("a=%d\n",a);
}
新手入门,看书的题目不过没解析,看了书还是有点懵嘿嘿,求认识大佬指教

//当初始化变量时局部变量也是有寿命和作用域的a=a+a的写法本身就矛盾使得原来a=12无效了就当与新赋了一个a值
所以按人类思维根本察觉不到a值已经变了。  a=a+a后续的可扩展性也很差因为a值已经变了
1