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();應該就行了。
至於兩個編譯器不一樣的情況,這是肯定會有的,畢竟是兩個不同的編譯器。