簡體   English   中英

減去 0 會發生什么

[英]What happens when 0 is subtracted

對於輸入 1234,輸出是 134。這里發生了什么?在這種情況下,當我打印 a[1] 時,它什么也不打印。

#include <iostream>
using namespace std;

int main() {
    char a[100];
    cin >> a;
    a[1] = a[1] - '0';
    cout << a;
    return 0;
}

'0'指的是可打印字符 0,它在 ASCII 中轉換為 48 的值。'2 '2'的值為 50,因此從 48 中減去 50 產生 2,即文本開始字符。 此字符不會轉換為可打印字符,因此cout不會打印它。

當我在這種情況下打印1 時,它什么也不打印。

參考ASCII表,字符'2'為0x32,字符'0'為0x30

a[1] = '2';  // a[1] is ASCII character 2

a[1] = a[1] - '0'; // a[1] now is 2 (numeric)

它不打印任何內容,因為 ASCII 代碼 2 是不可打印的 ASCII 代碼。

它不是 134

其 1+(特殊字符)+3 + 4

因為 1234 在字符數組中

a[1] = 2 

在字符變成

a[1] = 50 // The Ascii equivalent to a[1]

'0' ascii 值為 48

所以

a[1] = 50 - 48

所以 a[1] 變成2可能會也可能不會打印到屏幕上。

'0' 的 ASCII 值是 48,這里你用一個字符而不是一個數字進行減法。 在您的代碼中,您將char a[100]數組的索引 1 減去 '0',因此您得到 a[1] = 50 - 48,即 2。Char 中的 2 是 ETX(文本結束),無法表示在字符中,所以你得到 134 的輸出。取決於你的編譯器如何處理輸出。 有些編譯器可以輸出一些特殊字符。

當您的輸入為 1234 時

a[1]='2'

當您從 '2' 中減去 '0' 時,您會得到 2,它是文本開頭的 ascii,所以基本上 a[1]=文本開頭; 它不會在屏幕上打印任何內容

因此 a=1 34

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM