0

私は素晴らしいプログラミングパズルを持っています。なぜ同じですか?

#include <stdio.h>
#include <limits.h>

int main(int argc, char *argv[])
{
  unsigned int x = ULONG_MAX;
  char y = -1;   
  if (x == y) printf("That is same.");  

  return 0;
}

unsigned int は signed char に変換されるので、-1 になると思います。符号付きと符号なしの比較の基準になるかもしれません。知らない...

4

2 に答える 2

2

signed charとの間の tiff でunsigned int、 がunsigned int勝ちます!

こんな感じです

サイズは重要です

ここではwhich is-1に変換されるため、条件は true になります。unsigned intULONG_MAXif()

C では、サイズが重要です。変数は常にそれらの中で最大のサイズに変換されます。

于 2012-05-02T18:12:15.127 に答える
1

何年も前に、私はいくつかのことを学びました。それらの1つは、タイプのように比較することでした。

'の値が。より大きい場合は、charをにキャストします。または、の値をに制限する場合は、逆の方法でキャストします。このようにして、値を比較する方法をコンパイラーに伝え、メンテナーにも役立ちます。unsigned intunsigned intsizeof charunsigned intsizeof char

于 2012-05-02T18:16:59.123 に答える