[英]Why does printf( “%c”, 1) return smiley face instead of coded char for 1
這是我的代碼
#include <stdio.h>
int x,y;
int main( void )
{
for ( x = 0; x < 10; x++, printf( "\n" ) )
for ( y = 0; y < 10; y++ )
printf( "%c", 1 );
return 0;
}
它會回歸笑臉。 我到處搜索笑臉的代碼或1的代碼但我沒有設法找到任何鏈接或任何解釋為什么1的char值返回笑臉,當1的ascii代碼是SOH時。 我研究了這個問題的答案,但我沒有找到解釋為什么會發生這種情況的答案。
輸出在不同終端之間變化。 例如,在我的OS X默認終端上,不輸出任何字符。
在你的情況下, ☺
的輸出可能是由於某些歷史原因 。 簡而言之,這是因為將字節0x01
映射到U+263A
代碼頁437是MS-DOS的字符集。
因為1
不是可打印的字符代碼。 如果你想要'1'
你需要用字符文字來寫它:
printf( "%c", '1' );
// ^^^
如果使用數字,則從ASCII表中選擇一個字符編號,如果使用char
,則可以找到字符。
示例:此代碼打印ASCII字符編號65:
printf( "%c", 65 ); // Outputs: A
此代碼打印字母A:
printf( "%c", 'A' ); // Outputs: A
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.