[英]What does output indicate when larger address is subtracted from smaller address in C/C++ programming?
[英]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
不會打印它。
它不是 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.