這是我的代碼:
#include <iostream>
int main()
{
char x = 32;
while (x <= 126) {
std::cout << x << "\n";
x = 1;
}
}
到這里為止,一切正常,但是如果我將代碼更改為:
#include <iostream>
int main()
{
char x = 32;
while (x <= 127/*here the "bad" change*/) {
std::cout << x << "\n";
x = 1;
}
}
為了嘗試列印 [del] 字符,我的程式進入無限回圈并開始列印許多我不想要的其他字符。為什么?
uj5u.com熱心網友回復:
打開您的警告選項!(-Wextra對于海灣合作委員會)
test.cpp: In function 'int main()':
test.cpp:41:15: warning: comparison is always true due to limited range of data type [-Wtype-limits]
41 | while ( x <= 127 )
| ~~^~~~~~
我想警告資訊是不言自明的。
uj5u.com熱心網友回復:
適合 8 位有符號變數的每個值都小于或等于 127。因此,如果您的平臺使用 8 位有符號變數來保存字符,您的回圈將永遠不會退出。
uj5u.com熱心網友回復:
當 x 達到 127 時,它會在下一輪翻轉到 -128 [-128 到 127]
![為什么當我的 char 變數達到 [del] 字符 (127) 值時,我的 C 程式會進入無限回圈?](https://img.uj5u.com/2022/01/12/f8e761bfda0148b4a46d20350b0b581a.png)
uj5u.com熱心網友回復:
謝謝大家,我已將 char 變數的型別替換為無符號型別,現在程式運行良好,這是我的新代碼:
#include <iostream>
int main()
{
unsigned char x = 0;
while (x < 255) {
x = 1;
std::cout << short int(x) << ":\t" << x << "\n";
}
}
uj5u.com熱心網友回復:
美國標準資訊交換碼。ASCII 字符集。C 中的 char 變數是一個單位元組記憶體位置,可以存盤單個字符值。因為一個位元組可以保存 0 到 255 之間的值,這意味著 ASCII 字符集中最多有 256 個不同的字符。
現在對于您的解決方案,您可以嘗試以下代碼,最多 127 或完成 256
非常簡單:要列印 C 中所有字符的 ASCII 值,請使用 for 回圈執行代碼塊 255 次。即回圈變數 I 以 0 開始,以 255 結束。
#include<iostream>
using namespace std;
int main()
{
char ch;
int i;
cout<<"Character\t\tASCII Value\n";
for(i=0; i<255; i )
{
ch = i;
cout<<ch<<" | "<<i<<endl;
}
cout<<endl;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409050.html
標籤:
