c语言中输出结果语句,如果把要输出的结果字符去掉,为什么会错误??

printf("1=%d,i2=%d\n",i1,i2)去掉i1 i2也能执行程序,但结果不对,错误原是什么

说的简单点,printf("1=%d,i2=%d\n",i1,i2)这句话的运行过程是这样的:

找到叫i1和i2的存储地址,从存储地址所在的存储空间中把存储的整数取出来。然后输出两个整数的值。
按道理,如果去掉i1和i2这段程序是编译不过的。既然编译过了,那么唯一的解释是,编译器因为找不到正确的存储整数的存储地址,所以随机的选择了一个存储地址,并将里面存储的数据输出了出来。题主在学习c时,这种事不需要过多计较,因为代码本身是错误的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-02-29
printf(,)固定的格式就是有一个%号就要有一个变量,你把后面两个变量去掉。这是危险的操作,就算可以执行,也不一定是你想要的结果。换一台机器,换一个编译系统就出错了。
我知道你探讨的,是这样运行在微观上在内存上是怎样实现的。这个是高深的问题,初学者不必深究。
第2个回答  2016-02-29
找本书看看,这种问题不能随便上来问的

c语言中输出结果语句,如果把要输出的结果字符去掉,为什么会错误??
printf(,)固定的格式就是有一个%号就要有一个变量,你把后面两个变量去掉。这是危险的操作,就算可以执行,也不一定是你想要的结果。换一台机器,换一个编译系统就出错了。我知道你探讨的,是这样运行在微观上在内存上是怎样实现的。这个是高深的问题,初学者不必深究。

C语言printf输出时,为什么当我把 格式串中的 \\n 去掉之后无法输出了呢...
printf并不会直接输出到屏幕,而是输出到缓冲区。只有当有刷新缓冲区的时候才会输出到屏幕。导致缓冲区刷新到情况有这些:1 强制刷新 fflush;2,放到缓冲区到内容中包含\\n \\r ;3,缓冲区已满;4,需要从缓冲区拿东西到时候,如执行scanf。去掉那个\\n之后缓冲区一直得不到刷新,会一直等到缓冲区满的...

C语言为什么输出结果不对啊?
printf("%d ", &n)输出的是n的地址不是值,把&去掉,改成 printf("%d ",n);

C语言清除文字中的空格,程序总是无法正确输出结果,不知道错误出在什么地...
\/\/返回上面,接着判断是不是空格 } str2[i-flag]=str1[i]; \/\/这里赋值的计算 }str2[i-flag]='\\0'; \/\/这个对字符串加上结束符 printf("清除空格后的文字为:\\n");puts(str2);\/\/main(); \/\/ 这句删除 return 0;} ...

C语言编程,输出结果有误?
因为else if(num>99999 && num<0)的()中的num>99999 && num<0是永远不可能为“真”的表达式,所以无论输入什么数据都不会执行。根据疑问1的表述,这一句应该写成else if(num>99999 || num<0)可能才对。疑问2要对输入和这个if分支重新构架,改如下——或 后者较好。

c语言删除字符串中指定的字符,不知道为什么会显示程序出错
include<stdio.h>void main(){char* delchar(char a[80],char c);char b[80],x;printf("Input a string:");gets(b);printf("Input a char:");x=getchar();printf("After deleted,the string is:%s",delchar(b,x));}char* delchar(char a[80],char c){int y,k;for(y=0;a...

C语言我想让输出结果在整数的时候去掉小数部分,怎么弄?
一个基本错误,for循环的循环变量本来就不该是float,i<=2再i是float时是非常不靠谱的 你既然想去掉就不要用%f,应该用%d printf("%d -> ", (int)i);

c语言小白,请问为什么我的这段代码输出结果不正确?应该怎么改呢?求具...
所以你输入13的时候输出结果为0。针对这两点我做出如下改动:1、大改了统计个数的代码块,修改为:思想:当arr[i]为1时,计num为1,循环遍历当前元素之后的元素arr[i+1],如果arr[i+1]也是1,则计数num+1,i也+1,再次while循环,此时就是相当于看arr[i+1+1],如果还是1,则再重复前面的...

C语言简单程序输出结果错误,求大神解答
或者是除了在第一次输入的地方, 在字符串前面加一个半角字符, 只要是一字节就可以. 这样以抵消上次输入留下的回车.如:scanf("%d", &i);改成 scanf(" %d", &i);而且scanf最好不要用输入控制符, 因为用的人真心很少, 因为它让用户不好输入, 而且容易造成输入上的失败, 导致程序运行错误....

c语言如何删除输出的最后的一个字符?
可以通过输出\\b来实现。\\r\\n\\b 是C语言的转义字符之一,其含义为退格(BS),ascii码值为8。 当输出\\b时,其显示效果为光标退后一格。\\r\\n需要注意的是,只是光标退后,并不会删除字符,所以要达到真正的删除效果,还需要再输出一个字符。如果在后退后系统不再输出其它字符,那么需要手动输出一个...

相似回答