A. 在c语言中输入和输出的数字怎么会不一样
因为内存中还存在一些东西,所以你可以用getchar()先读取一下。
比如:getchar(n);
scanf("%d",&a);
printf("%d",a);
B. c语言的编译器,打开同一个程序,一样的输入,为什么有时输出是对的,有时是错的
如果真是这样,恐怕是跟内存泄漏、野指针之类的问题有关,错误不容易重现,因为虽然输入相同,但每次运行时系统的情况不同,编译器分配的内存情况不同。
C. 如何在C语言编译器中打出♥
#include <stdio.h>
int main()
{ int i=0;
for (i=0;i<256;i++)
printf(“%c\n”,\\i);
return 0;
}没有调试,自己调吧,就那个意思,你循环着都打一遍就知道了
D. 为什么在c语言中对0进行取反会得到ffffffff
你所使用的编译器是32位的,其记录0用了32位的二进制即
0000 0000 0000 0000 0000 0000 0000 0000
把它们取反,所有的0变成1即
1111 1111 1111 1111 1111 1111 1111 1111
写成十六进制就是是ffffffff
E. C语言中为什么整型数组用{0}初始化和定义后再用{0}赋值的结果不一样
在后面的a[100]={0};是非常危险的
在这里a[100]的100表示对第101项进行一项赋值,数组下标已经越界了,会造成运行出错
而在声明中的100表示项数100项,同时为了方便初始化,用{0}表示对全部项初始化
F. C语言编译器为何对相同的数进行不同格式输出,三个数结果不同
作死了呗。
printf 的格式控制符 %d 只能输出 int 类型的数,但是对应的参数 factor(5) 不是 int 类型的而是 double 类型的,所以 printf 就不知道怎么输出了,因此后面输出的都是垃圾值……
G. C语言同一段代码,同样的文件,编译器为什么运行结果不一样
有如下几种可能:
1 代码运行的平台硬件不同。
不同的CPU,如嵌入式CPU,intel CPU,以及IBM的CPU,在硬件最底层就是不同的,而C语言是一门和底层相关性极大的语言,在不同的硬件上运行出不同结果是很正常的。
2 代码运行的系统不同。
相同CPU在不同操作系统上跑相同代码时,一样会出现不同的结果。这是由于系统底层的实现不同造成的。比如Linux和Windows,在底层处理上就有一定的差异。
3 编译器不同,同时代码中使用了C规范未定义规则的语句。
C语言规范并没有对C语言的所有行为做定义,所以相同语句,不同编译器的运行效果可能有所不同。比如同样的sizeof(int),在16位编译器上结果为2,而32位编译器上就会是4。
4 代码获取到的外部数据不同。
比如运行代码时获取到的其它输入不同,包括程序中获取的环境变量,实时信息,以及各种外部输入等,均有可能出现不同。
比如在做随机数时,如果以当前时间设定随机数种子,由于每次的时间是不同的,同一个程序每次运行的结果都是不同的。
H. C语言中‘0’和0是不是不一样的,'0'在实际运算中是不是代表ascii码
'0'即(char)48,一个字符等同于它的ASCII码
'0'的内存形式为0x30(00110000)
0即(int)0,一个数字默认为int类型
0的内存形式为0x0000(0000000000000000)
在 C 语言中,有:
'0'+9=='9'
I. C语言 不一样的输出
C语言是比较原始的语言,正因为如此,C语言有很多的版本,比如ansi C,当然他是现在C语言的标准,但是仍然有和他不一样的其他标准,如果你的C语言和计算机原理性知识已经掌握了一定的东西的话,我建议你去看《C专家编程》这本书,通过他你可能学不到什么实用的东西,但是他会丰富你的C语言内涵,使你的思维更有档次。
言归正传,这道题如果你说得不到正确地答案,那么我给你一种解释:
你所用的C编译器可能会这么干:
编译printf("%ld",32767+1)时,先把32767+1处理,因为这个常数表达式可以优化的,即32767+1不需要运行时才算出来,而C语言的标准是一般的情况以int型的大小来运算,那么他32767+1得多少? -1,然后调用printf("%ld",-1),答案就是-1,我不知道你的结果是不是这个,如果不是那么可能还有其他如我所说这样的情况。
再来说一说为什么VC的就没问题,要知道c++中,int默认是4字节,而C是两字节,你在VC里面新建文件如果不指定后缀的话是cpp文件,而且微软的产品都很人性化,很善解人意,编译器也是如此,我试过很多math的函数,比如pow,sqrt等,参数不对时g++编译器都会报错的,在vc 6.0都能通过,就是说vc的编译器给默认的类型转化了,你这个或许就是这样。
J. C语言代码在不同编译器下运行结果不同,请问原因
可以把fflush(stdin); 删掉,有时候把这个删掉就行了。scanf("%c", &ch);换成ch=getchar();应该就行了。
至于两个编译器不一样的情况,这是肯定会有的,毕竟是两个不同的编译器。