6

符号なし変数に補数値を割り当てました。

では、なぜこのCプログラムは負の数を出力するのでしょうか。

#include<stdio.h>
#include<conio.h>

int main()
{
    unsigned int Value = 4;         /*   4 = 0000 0000  0000 0100 */  
    unsigned int result = 0;

    result = ~ Value;               /* -5 = 1111 1111  1111 1011 */  

    printf("result = %d", result);  /* -5             */

    getch();

    return 0;
}
4

2 に答える 2

14

フォーマット指定子は、引数を符号付き整数として扱うように%d指示します。代わりにprintf使用してください。%u

于 2010-05-02T09:26:40.787 に答える
4

これは、%dがsigned int形式のプレースホルダーであるため、変換されているためです。符号なしには%uを使用します。

于 2010-05-02T09:28:09.380 に答える