為什麼c語言中我只定義int的話for i 0 i10 iscanf

時間 2021-08-30 10:45:16

1樓:常莉忻巨集峻

樓主需要理解一下c語言輸入輸出流的概念。

scanf這個函式以空白字元(空格,製表符,回車符都算)作為間隔符,以回車符作為結束符。

當c語言執行到scanf這句話的時候,會檢查輸入流是否為空,如果為空,程式就會停止,然後等待使用者輸入。

當使用者輸入回車時,輸入結束,c語言會將剛才使用者輸入的資料傳遞給scanf函式,由他來根據程式要求從輸入流中獲取資料。.

for(i=0;

i<10;i++)

scanf();

樓主的這種寫法相當於執行10次scanf。第一次執行scanf時,輸入流一定為空,就等待你的輸入。這個時候只要你不輸入回車,輸入過程就不會停止,就不會執行程式,更別提跳出迴圈了。

當輸入回車的時候,scanf開始掃描,掃描到空白字元的時候,將開始到空白字元之間的字元轉換成十進位制數字賦值給你的引數。第一個scanf結束。

開始執行第二個scanf,如果上次掃描還沒有到末尾,就不會停止等待輸入,就在上次的輸入流基礎上再次掃描,一直到空白符停止。一次類推,當10次scanf結束時,迴圈也就停止了。

樓主所說的輸入大於10個數字而不跳出迴圈,是不是一直沒有敲回車呀,只有敲了回車之後輸入過程才會停止,才會將輸入的資料給scanf去掃描。如果不敲回車,一直處於輸入狀態的。

如果輸入的資料超過10個再敲回車也沒關係,scanf只會把前10個提取出來,後續的數字還在輸入流中而已,如果後面還有scanf,會繼續掃描輸入流。

2樓:匿名使用者

int[10] //這樣定義錯誤

定義陣列,要給陣列起一個名字

例如:int a[10];

int i;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

3樓:jubilee_若今

scanf(%d,a[i])這樣輸

為什麼for(int i=0;i<9;i++) 在c語言中是錯誤的?

4樓:匿名使用者

標準c語言這bai樣寫會出現語法錯誤du的,如果使用t20,這樣zhi寫肯定會出錯dao,無法編譯,正確的版

寫法是:在函權

數的開始申明變數,之後再使用變數,比如:

void fun()

後來很多整合開發環境,是支援for(int i=0;i<9;i++)這種寫法的,不過我的建議還是按照標準的較好,這樣在任何情況下都不會出錯。

5樓:bbk臨兵

因為c99標準以bai前的c標準是du不支援臨時變數在zhifor迴圈中定義的。

c99標準就

dao支援這樣寫。但是目專前有些編譯器並不怎麼願屬意支援c99標準,或者預設以c89模式進行編譯執行。

如果你用的是visual c++6.0的話,那沒辦法,那貨早停止更新了,不可能支援c99了。

如果用的是gcc 的編譯器(v3.0以上)的話,預設按c89編譯。手動編譯時加上-std=c99就行了能按c99標準編譯,上面那樣寫就沒問題了。比如:

gcc -std=c99 tset.c -o test

如果用的是使用gcc編譯器的codeblocks的話,倒是知道怎麼讓它預設自動以c99標準編譯:

settings -> compiler and debugger...

開啟編譯除錯設定面板,在global compiler settings項裡面的other options裡新增-std=c99就行了。

其他使用gcc的ide應該都能設定這個的。

不過建議還是按c89的寫法寫吧,很多地方寫成c99標準的都會出錯,誰叫他們不買c99的帳呢。

6樓:匿名使用者

你是不是在for迴圈外面又用 for 裡面定義的 變數 i 了?

7樓:匿名使用者

換個編譯器看看,我在visual c++6.0中這樣寫不行,在其他的編譯器中(比如說codeblocks、cfree5、gev c++)通過了。

8樓:匿名使用者

c89 可以

c99就不可以

9樓:匿名使用者

我想你以前肯定是學過c++吧!!!!!

雖然說c++是c的升級版,但是還是有區別的嘛!!!!

為什麼for(int i=0;i<9;i++) 在c語言中是錯誤的?

10樓:匿名使用者

標準抄c語言這樣

寫會出現語法錯誤的,如果使bai用t20,這樣寫肯定會出du錯,無zhi法編譯,正確的寫法是:在函dao數的開始申明變數,之後再使用變數,比如:

void fun()

後來很多整合開發環境,是支援for(int i=0;i<9;i++)這種寫法的,不過我的建議還是按照標準的較好,這樣在任何情況下都不會出錯。

c語言中定義了int,為何我輸入了字母或者其他字元

娛樂小八卦啊 這是因為在輸入了一個字母或者其他字元的時候,電腦會自動識別轉換為對應的ascii碼輸入程式。ascii 碼使用指定的7 位或8 位二進位制陣列合來表示128 或256 種可能的字元。標準ascii 碼也叫基礎ascii碼,使用7 位二進位制數 剩下的1位二進位制為0 來表示所有的大寫和...

cin在C語言裡是什麼意思,C語言中int與cin的區別是什麼

叫那個不知道 cin是c 程式語言中的標準輸入流物件,即istream類的物件。cin主要用於從標準輸入讀取資料,這裡的標準輸入,指的是終端的鍵盤。此外,cout是流的物件,即ostream類的物件,cerr是標準錯誤輸出流的物件,也是ostream 類的物件。這裡的標準輸出指的是終端鍵盤,標準錯誤...

在C語言中float與int有什麼不同

float是浮點型,int是整型,float max是定義一個浮點型的變數,名字叫做max 井鈺 其實,你要知道區別的話,很簡單的 相同點 他倆都是基本資料型別.都可以定義該型別的變數不同點 定義變數時,int型別變數和float型別變數所佔用的空間大小不同這個與你的機器有關,看它的字長是多少位的,...