两个变量的比较

标签 c

我只是一个很棒的编程难题。为什么是一样的?

#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。它可能是有符号和无符号类型比较的标准。我不知道……

最佳答案

signed charunsigned int 之间的较量中,unsigned int 获胜!

是这样的

Size does matter

此处 -1 将被转换为 unsigned int,即 ULONG_MAX,因此 if() 条件为是的。

在 C 语言中,大小很重要。变量总是转换为其中最大的大小。

关于两个变量的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10419280/

相关文章:

c - 为什么我的代码中的 if 语句不起作用?

c - c中声明但未初始化的int变量的值

c - UART接收字符串

c++ - glColorMask 是否影响 glClear

c - 将文件的每一行作为字符串存储在数组中

c - 如何消除 Linux 中 DDA 行算法中的以下错误?

c - 循环缓冲区突发丢失最后一个字节

c - Valgrind 和 strlen() 函数错误

c - 使用 while、pi 近似在 C 上进行无限循环

c++ - 将 Apache ActiveMQ 与 C/C++ 结合使用