C 运算符的对与错

C 运算符的对与错,c,C,又是我。。。很抱歉问了一些可能有点愚蠢的问题,但我是一个新手,我真的很想学习编码。。所以我有个问题想知道为什么这些都是真的?它与运算符有关,或者C行为未定义 int x; int b; b = 1 < x < 10; printf("%d%d",b); 为什么这些都是真的?这是因为ASCII码还是什么?在您的第一段代码中,有几个问题: x未初始化您没有给它一个值 1

又是我。。。很抱歉问了一些可能有点愚蠢的问题,但我是一个新手,我真的很想学习编码。。所以我有个问题想知道为什么这些都是真的?它与运算符有关,或者C行为未定义

   int x;
   int b;
   b = 1 < x < 10;
   printf("%d%d",b);

为什么这些都是真的?这是因为ASCII码还是什么?

在您的第一段代码中,有几个问题:

x未初始化您没有给它一个值 1
int x = <some valid value>;
int b;
b = ((1 < x) && (x < 10)); // expression is true if x is between [2..9]
printf("%d",b);
应该是

(c==' ') || (c=='\t') || (c=='\n');

请注意,与制表符\t比较时,双精度等于。否则,您将为c指定一个制表符。

在您的第一段代码中,有几个问题:

x未初始化您没有给它一个值 1
int x = <some valid value>;
int b;
b = ((1 < x) && (x < 10)); // expression is true if x is between [2..9]
printf("%d",b);
应该是

(c==' ') || (c=='\t') || (c=='\n');
请注意,与制表符\t比较时,双精度等于。否则,您将为c指定一个制表符。

将常量10与布尔表达式进行比较的结果始终为真

您可以看到一个关于C运算符优先级的表格 可以这样理解:

b = ((1 < x) < 10);
在C等语言中,关系运算符返回整数0或1,其中0表示false,任何非零值表示true

所以存储在b中的值是1

此外:

您没有初始化x,它可能应该有垃圾信息!=假的

在第二个代码中,您是在分配而不是比较,c='\t'这是故意的吗?这就是它打印“制表符”的原因。

将常量10与布尔表达式进行比较的结果始终为真

您可以看到一个关于C运算符优先级的表格 可以这样理解:

b = ((1 < x) < 10);
在C等语言中,关系运算符返回整数0或1,其中0表示false,任何非零值表示true

所以存储在b中的值是1

此外:

您没有初始化x,它可能应该有垃圾信息!=假的


在第二个代码中,您是在分配而不是比较,c='\t'这是故意的吗?这就是它打印“选项卡”的原因。

c='\t'-这是打字错误吗?printf%d%d,b;-您正在使用带单参数的双%d。这是未定义的行为。为什么这些都是真的你能说得更具体些吗?这些都是真的吗?第一段代码中的x未初始化,您是否询问x是否为真?您应该在一些编译器中启用所有编译器警告这是-Wall。编译器将帮助您查找bug。c='\t'-这是打字错误吗?printf%d%d,b;-您正在使用带单参数的双%d。这是未定义的行为。为什么这些都是真的你能说得更具体些吗?这些都是真的吗?第一段代码中的x未初始化,您是否询问x是否为真?您应该在一些编译器中启用所有编译器警告这是-Wall。编译器将帮助您查找错误。此外,c=''| | c='\t'| | c='\n'的结果实际上需要分配给一个变量,以便可以打印其值。c int b;int x;扫描%d,&x;b=1