【问题标题】:Logical Operators and Initialization in a variable [closed]变量中的逻辑运算符和初始化
【发布时间】:2015-10-09 17:51:28
【问题描述】:

这样的表达背后的概念是什么?

int x;
x=7||6;

【问题讨论】:

  • 你期待什么?
  • 问题本身中提到了这些概念。提示:它不是初始化部分。
  • 我投票决定将此问题作为题外话结束,因为对于家庭作业问题,您应该至少付出最小的努力来解决它
  • @Slava 这对我来说不像家庭作业
  • @tobi303 在编辑问题之前是“输出:1 它背后的概念是什么??????请解决我的问题。”听起来像我的家庭作业

标签: c logical-operators


【解决方案1】:

来自 C11 草案规范

6.5.14 逻辑或运算符

||如果任一操作数比较,则运算符应产生 1 不等于0;否则,它产生 0。结果的类型为 int。

所以在表达式x = 7||6; 中,|| 产生 1,因为至少有一个(实际上是两个)操作数比较不等于 0。

【讨论】:

  • 如果我使用类型转换会怎样
  • 谢谢,我们不能正确使用类型转换???
【解决方案2】:
int x;
x=7||6;             // it is true always .

输出1,你得到的是由于bool被提升为int。你可以假设 -

true==1

【讨论】:

  • 这次更新意味着什么?
  • @SergeyA 我不关注。请详细说明。
  • 抱歉,bool 没有提升为 int。 Bool IS int in C, ==0 表示假,0 表示真。
  • @PaulOgilvie 问题被标记为 CC++ 。和 AFAIK ,bool 是 C++ 中的基本数据类型。将true 转换为int 将产生1
  • 那么答案只对C++有效。
【解决方案3】:
x = 7 || 6;
x = 7 "or" 6; //or can only apply to booleans
x = true or true; //Auto cast to booleans
x = true;
x = 1; //Auto cast to int

请在你的课堂问题上做一些最小的努力......

【讨论】:

  • 没有强制转换为 int。没有转换为布尔值。 int IS 布尔值。
猜你喜欢
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
  • 1970-01-01
  • 2017-03-19
  • 2014-11-20
  • 2012-07-14
相关资源
最近更新 更多