在c语言中int a=5;printf("%d %d",++a,a++);答案是6 和5,为什么不是6和6,希望大家能帮我解决一下。

作者&投稿:葛巧 (若有异议请与网页底部的电邮联系)
c语言中int a=5;int b=6;printf("%d",printf("%d%d",a,b));输出为什么是562?~

先由嵌套在内部的printf("%d%d",a,b)打出56,再由外部的printf("%d",printf...);打印出嵌套在内部的printf("%d%d",a,b)的返回值2——因为内部的printf("%d%d",a,b)输出了两个数据a和b,所以返回输出数据个数是2。把这个语句拆开写就一目了然:
int a=5;int b=6,tmp;//增设一个临时变量tmptmp=printf("%d%d",a,b);//把嵌套的printf("%d",printf("%d%d",a,b));拆成这两行printf("%d",tmp);

考试的悲剧,开发中永远不会写这种代码
结果是-60
x = a * a = 36
y = a - x = -30
a = a + y = -60

printf()在对逗号后面的数据处理时是按照从右往左的顺序的,即先执行a++,再执行++a,这样,输出的第二个数就是5了,而在执行++a时,c语言中并不认为这是第二次使用a(这段执行过程最好看汇编),所以执行的其实是5+1,所以输出的第二个数是6
其实你可以试一下printf("%d %d",++a,++a);,若初始值为5,输出结果应该为7和6

至于梅竹_菊兰所说的同时执行,这是不可能的,任何程序都是不可能同时执行。所谓的同时执行也只是把时间切成片段,让每一部分在那个时间片段里分别执行一下,这样看起来就像是在同时执行一样。

这是编译器的定义问题,不同的编译器有不同的原理,有的编译器结构是6和5,另外的编译器结果可能是6和6。
结果为6和5的编译器可能定义了在printf语句中++a和a++是同时进行的,都对原始的a进行处理。

++a是先运行++ 后显示当前a
a++是先运行了显示当前a 在运行了++运算


吉隆县13546551980: c语言a=5,!a为多少? -
夫索云实: int a=5;printf("!(a--)=%d\n",!(a--)); //---result:0int a=5;printf("!a--=%d\n",!a--); //---result:0int a=5;printf("a--=%d\n",a--); //---result:5int a=5; printf("1+(a--)=%d\n",1+(a--)); //---result:6a-- 计算时用a的值,计算完后a=a-1; --a 先a=a-1,计算时用的是a减一后的值;

吉隆县13546551980: 在c语言中int a=5;printf("%d %d",++a,a++);答案是6 和5,为什么不是6和6,希望大家能帮我解决一下. -
夫索云实: printf()在对逗号后面的数据处理时是按照从右往左的顺序的,即先执行a++,再执行++a,这样,输出的第二个数就是5了,而在执行++a时,c语言中并不认为这是第二次使用a(这段执行过程最好看汇编),所以执行的其实是5+1,所以输出的第二个数是6 其实你可以试一下printf("%d %d",++a,++a);,若初始值为5,输出结果应该为7和6至于梅竹_菊兰所说的同时执行,这是不可能的,任何程序都是不可能同时执行.所谓的同时执行也只是把时间切成片段,让每一部分在那个时间片段里分别执行一下,这样看起来就像是在同时执行一样.

吉隆县13546551980: 新人自学C语言,有个问题不明白 int a=5.5 printf("%d",a) 输出会是5. 我 -
夫索云实: 如果你要输出5.5就必须把int改为float,且%d改为%f.你说“输入和输出都要定义吗”,这完全就是没有明白C语言,通俗的说,定义一个变量是为了让系统帮你创建一个变量,比如你的程序 :int a=5.5;你让系统帮你创建了一个整形变量a,但你却给了一个浮点型(也就是数学中的小数)的数据给系统,让系统把5.5赋给a(其实我说“赋值给a”不对,确切的说是初始化,但这样对你来说比较好理解),只是就出现了问题,因为a是整形,所以系统把小数5.5变成整数5再给a.再说说%d和%f,这是为了告诉系统你要输出的东西是什么类型的.希望对你有帮助.

吉隆县13546551980: C语言编程 小猴吃了5个桃子,大猴吃的是小猴的3倍少1,编程并输出他们共吃多少桃 -
夫索云实: ……这还要编程#include<stdio.h> void main() { int a=5; printf("一共吃了%d个桃\n",a+3*a-1); }

吉隆县13546551980: C语言中怎样将变量进行循环 -
夫索云实: 用数组就可以实现了. int a[n]; 就是定义了一个类型为int型的数组.分别为a[0],a[1],a[2]......a[n-1]; 注意,在C中,数组的长度是从0到n-1的. 然后就可以用循环语句来实现控制了.

吉隆县13546551980: C语言中 int a=5,b= - 3,c=4;printf("%d %d",(++a,b++,b++),b++);为什么结果是 - 2 - 2? -
夫索云实: 首先我们看逗号表达式: 格式:表达式1,表达式2,...表达式n;它的原理是这样的,执行表达式1,再执行表达式2,一次类推...一直执行到表达式n; 但是最后整条语句的最终结果取表达式n的值; 比如,有一个这样的语句:a = (1,2,3)...

吉隆县13546551980: c语言中int a=5怎么计算 a+=a - =a*a 要带个解释… -
夫索云实: -40. a+=a-=a*a→a+=a-=25→a+=-20→-40.

吉隆县13546551980: 在C语言中,有如下的写法: int a = 5; int *pa; pa = &(a + 1); -
夫索云实: 首先,你定义指针pa的时候最好先给它初始化,因为不初始化的话它可能指向一个很重要的区域,你这时候如果再赋值则可能改变这个重要区域的数据.至于pa=&(a + 1)这个是不对的,因为a+1的结果是一个数,它存放在内存的一个临时空间中,临时空间是会被释放的,你取临时空间的地址是不可取的.

吉隆县13546551980: C语言中,int a=5,b=4;printf("%d",(a++,b -- )); 括号里面什么 -
夫索云实: 你好: 你指的括号里其实为逗号运算符,它是C语言中优先级最低的运算符,一般用法就是(a,b,c,…),这个逗号表达式的值永远为括号中最后一个数量的值,所以printf函数只有一个%d. 而输出呢,虽然看似为b--,但是这是后自减,就是对b进行输出后再减1. 有不懂的地方随时回复我. 希望我的回答能帮助到你.

吉隆县13546551980: C语言中如何打印一个变量的地址,定义了 int a=5; 可以看到他在内存中的地址吗 -
夫索云实: 变量的声明有两种情况: (1) 一种是需要建立存储空间的(定义、声明).例如:int a在声明的时候就已经建立了存储空间. (2) 另一种是不需要建立存储空间的(声明).例如:extern int a其中变量a是在别的文件中定义的. 前者是"定义...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网