1樓:
*p1++=p2++,這個是賦值語句,而非比較運算。
字元陣列雖然有大小限制,但是指標就不同,即便超過了大小,指標指向陣列越界後的下乙個記憶體單元,並不會發生錯誤;
另外,printf("%s",a)函式列印字串,它是在遇到字串結束符的時候才終止輸出,此時a陣列的值已經被賦值為p2所指向的記憶體空間的值。
2樓:網友
這個程式是錯的!
因為 a 陣列只有四個元素,分別是:『1』、『2』、『3』、\0 。而第二個陣列是8個元素,怎麼能把 8 個元素逐一賦給 4 個元素的陣列呢?,陣列 a 越界後,改寫了不屬於它的資料,程式是要崩潰的!修改如下:
#include
int main()
迴圈中的語句是乙個賦值語句,先把 *p2 的值賦給 *p1,然後判斷當 *p1 ==0' 時,迴圈結束。
3樓:負負
你要記得,賦值語句最後的返回結果是:左邊變數賦完值之後它裡面的結果。 所以,只有當*p2的結果為0時,這個迴圈才會結束。
4樓:幻夢·人生
賦值語句的返回值為等號左面的值。也就是p1,p1 ==0時候推出。
5樓:樂酷科技
#include
int main()
另外 樓上說得對 這個程式是錯的。
6樓:匿名使用者
這都問 你他嗎垃圾。
c語言while的用法
7樓:滄海雄風
第二個 看見後面的 ; 了嗎抄?
其實完整格式是。
while(p3_7==0)
就是一直迴圈到不等於0 什麼都不幹 實際上正規的寫法應該是 null; 而不是只有乙個;
只有乙個; 在**優化時會被優化掉。
8樓:風雲小子
你這個應該是微控制器裡面計算口輸入按鈕計數,然後通過p0十位p2個位,接數碼管顯示的程式。下面是給您分析的過程(第二個是檢測按鍵是否起來):
void main(void)
p0=table[count/10];
p2=table[count%10];
}while(p3_7==0); 檢測按鈕是否起來,為下一次檢測按鈕 按下做好準備}}
}這個程式很簡單,要是彙編的話,挺複雜的。
9樓:匿名使用者
while(p3_7==0);
這個while語句的迴圈體中只有乙個空語句(即只有乙個分號的語句),所以如果p3_7==0 則進入迴圈體中去執行一下空語句(即什麼也不幹)。呵呵。
10樓:匿名使用者
while(p3_7==0);
等待埠拉高,如果現在是低電平的話,將進入死迴圈,什麼事情都不幹,埠拉高後就跳出迴圈。
11樓:吶誰ni在**
while(p3_7==0);
就是說當p3_7==0時,該函式保持原樣,不變、
12樓:程式設計師的每一天
c語言迴圈結構之while迴圈語句。
c++ while為什麼會無限迴圈?
13樓:紫薇參星
你的程式的問題是把for迴圈變數a,在while迴圈中改變大小了,導致無限迴圈。
解決方法是把a的值賦給臨時變數t,用t做while迴圈。
還有x的輸入要用cin.
另外,對於每個數a,b都要初始化為0.
改完的程式如下(見圖)
14樓:聽不清啊
for(a=10;a<=x;a++)
因為這裡的while迴圈每次到a==0時就結束迴圈,執行a++就變成1,然而因為x是乙個大於9的正數(否則就不會進入迴圈),就會不停地重複以上的操作,所以在這裡,是for迴圈發生了死迴圈。
15樓:
while迴圈的用法是。
while(判斷條件)
如果判斷條件為真,則實行迴圈內部**;
如果判斷條件為假,則跳出迴圈,執行後續**。
而判斷條件為真的時候,值是1;判斷條件為假的時候,值是0故而,while 1是無限迴圈。
---僅供參考。
c語言while迴圈用法
16樓:霂棪愛娛樂
c語言while迴圈用法:
一般形式如下:
while(表示式)
{迴圈體內語句}
迴圈體外語句。
其中執行過程如下:
(1)計算while後面括號裡表示式的值,若其結果非0,則轉入(2),否則轉(3)。
(2)執行迴圈體,轉(1)。
(3)退出迴圈,執行迴圈體下面的語句。
由於是先執行判斷後執行迴圈體,所以迴圈體可能一次都不執行。
迴圈體可以為空語句「;」
使用:如果迴圈次數在執行迴圈體之前就已確定,一般用for語句。如果迴圈次數是由迴圈體的執**況確定的,一般用while語句或者do- while語句。
當迴圈體至少執行一次時,用do-while語句,反之,如果迴圈體可能一次也不執行,則選用while語句。c++/c迴圈語句中,for語句使用頻率最高,while語句其次,do語句很少用。
三種迴圈語句for、while、do-while可以互相巢狀自由組合。但要注意的是,各迴圈必須完整,相互之間絕不允許交叉。
c語言中的while迴圈是怎樣的?
17樓:走進支教生活
我是一名多年的微控制器工程師,下面的講解你可以參考一下。
原句是下面這樣的。
while(n)
講解:1 while(1)是無限迴圈花括號裡面的語句。
比如:while(1)
這樣語句a=b; c=d;,從上到下執行完後,然後又回到起始點,再從上到下執行,如此無限迴圈。
2 while(i--)
假設i=50,每執行完花括號裡面一次,i就減1,這個就是符號「--的原理,「-名字叫做自減,直到i=0就退出while花括號裡面的語言,相當於執行while花括號裡面的語句50次。
比如:i=50
while(i--)
e=g;這樣語句a=b; c=d;,從上到下執行完後,然後又回到起始點,再從上到下執行,如此迴圈50次後,就退出while語句,往下面執行e=g。
c語言while迴圈要點
18樓:戶如樂
while語句在使用過程需要注意幾個要點:
一、無限迴圈
先來看看以下的**示例。
執行**後,會迴圈輸出n=0
在上述**中,雖然有n++自增,但while迴圈沒有花括號將語句包含。對於while迴圈,如果沒有花括號,只有直接跟在while測試條件後的語句才是迴圈的一部分,因此上述**中n++不屬於迴圈。
二、空語句
在c語言中,單獨的分號表示空語句。先來看以下**。
程式的輸出結果是:
n = 4在該例中,在while迴圈後有分號(;)這個分號是單獨的一條語句,即空語句,什麼都不做。while在執行完迴圈條件測試後,執行空語句,繼而進行下一次迴圈,一直到迴圈條件不滿足為止。
在該例中,雖然printf()語句在while之後,但while語句結束後有空語句,printf()並不屬於while迴圈,因此printf()只會列印一次。
c語言while迴圈問題2?
19樓:格里程式設計辦公技巧
**有幾個錯誤,一是scanf格式要用雙引號"";
二是判斷要使用==號,=號是賦值。如果是第二個輸入!號,while(c='!一直為ture會死迴圈。
20樓:煥煥的工科學長
首先來看看你的程式,整體上來說,還是沒有大的問題的。不過,需要注意的是條件語句那裡,關係運算子有,大於》,小於<,等於==,不等於!=,大於等於》=,小於等於<=這幾種。
你的第二個while處的條件判斷語句寫錯了,寫成了賦值語句。
希望我的能夠幫助你解決你當前的問題。
21樓:快樂翔雲
首先明確scanf的作用,scanf從輸入流中獲取需要的資料,scanf中格式控制為%c的時候,scanf將從輸入流中取得乙個資料,並將這個資料放在某乙個位址的空間中,你輸入兩次'!'可能被第乙個while中的三個scanf吃乾淨了,但最重要的是,你的scanf很明顯寫錯了,第二個引數是乙個位址,你這執行必錯。
C語言怎麼退出while迴圈,c語言中while的用法
不不見不念 if條件語句寫錯了 if a 判斷字串相等不能用等號 if strcmp a,0 要這麼寫 while 是乙個迴圈體,退出迴圈體的方法有 1 迴圈體條件 不成立,如 while a 0 當 a 0 的時候,條件 a 0不成立,while 迴圈結束,退出 while 迴圈。2 在迴圈體內使...
while 的用法 c語言,c語言中while的用法
1024程式設計師 c語言迴圈結構之while迴圈語句 while 表示式 就是當 表示式的則為非零時,執行迴圈體內的語句!你的程式相當於 int jsvalue long n if s n return 1 if s n return 0 k是long int型別,所以k不能為小數 輸入n迴圈開始...
C語言如何使while迴圈兩次,C語言中如何實現while迴圈,執行設定的一段時間,比如5秒
潭清安董丁 anf c a 來接收使用者輸入的乙個字元時,會將回車符也接收下來。c語言在處理時,會將使用者輸入放在鍵盤緩衝區,使用scanf來接收 c時,編譯器從鍵盤緩衝區讀取乙個char字元,但是並不清空後面的字元,所以導致下一次scanf c a 時,將剩下的回車符先給讀進來,並進行處理了。要解...