簡體   English   中英

為什么printf(“%c”,1)返回笑臉而不是編碼char為1

[英]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.

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