[問題] 一個基本的迴圈問題 -已解決-
小弟是C語言的新手
我在書上看到一個迴圈的程式碼感到有些疑問
想要釐清一個迴圈的觀念
所以想要請各位前輩給一下指導
程式碼:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char ch;
while(ch!=17){
ch=getch();
printf("ASCII of ch=%d\n", ch);
}
printf("你已經按了Ctrl+q...\n");
system("pause");
return 0;
}
感到疑問的地方:
本來以為變數ch沒有設值,迴圈的判斷式無法判斷而出現錯誤
但結果卻可以正常執行
然後我把條件改成ch==17
跑出來的結果是跳過迴圈這段
代表雖然ch沒有值,但判斷式還是有在判斷ch的值是否有符合條件
目前猜測可以程式執行的原因可能有2
1. ch的殘值=/=17
所以進入迴圈
2. ch是空值,空值=/=17
所以進入迴圈
想請問一下各為前輩原因是那種?還是另有正解?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.130.32
※ 編輯: CloudyWing 來自: 218.167.130.32 (11/19 02:07)
※ 編輯: CloudyWing 來自: 218.167.130.32 (11/19 02:08)
→
11/19 02:08, , 1F
11/19 02:08, 1F
→
11/19 02:08, , 2F
11/19 02:08, 2F
→
11/19 02:09, , 3F
11/19 02:09, 3F
→
11/19 02:10, , 4F
11/19 02:10, 4F
→
11/19 02:10, , 5F
11/19 02:10, 5F
→
11/19 02:12, , 6F
11/19 02:12, 6F
→
11/19 02:13, , 7F
11/19 02:13, 7F
我指的空值就是你說的沒有值 XD
所以這種變數未設值不是正常應該用得寫法?
甚至極低的機率發生因殘值=17
所以不執行迴圈的可能?
補充一下我是用Dev-C++編譯
※ 編輯: CloudyWing 來自: 218.167.130.32 (11/19 02:18)
→
11/19 02:17, , 8F
11/19 02:17, 8F
→
11/19 02:18, , 9F
11/19 02:18, 9F
推
11/19 02:21, , 10F
11/19 02:21, 10F
→
11/19 02:22, , 11F
11/19 02:22, 11F
→
11/19 02:22, , 12F
11/19 02:22, 12F
我有看到過這一條
所以我才會對於書上提供這個程式碼又可以正常執行感到疑惑
感謝前輩的指導
※ 編輯: CloudyWing 來自: 218.167.130.32 (11/19 02:25)
※ 編輯: CloudyWing 來自: 218.167.130.32 (11/19 02:29)
→
11/19 08:01, , 13F
11/19 08:01, 13F
→
11/19 08:01, , 14F
11/19 08:01, 14F
推
11/19 08:53, , 15F
11/19 08:53, 15F