小编lim*_*ade的帖子

从自然语言到 C++ 表达式

任务:

将以下自然语言表达式转换为 C++ 表达式。假设所有变量都是非负数或布尔值(值为真或假)。

自然语言:

a 和 b 都为假或 c 为真,但不能同时为真。

我的解决方案:

(a==0 && b==0)xor(c==1)
Run Code Online (Sandbox Code Playgroud)

教授解决方案:

(!a && !b) != c
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 我想我稍微理解了第一个括号,通过说“not-a”和“not-b”,我认为 a 和 b 一定是错误的,前提是 ab 在开始时被假定为非零。对?

  2. 但是说“不等于c”的部分呢?

  3. 我不明白教授的解决方案,谁能帮我分解一下?

感谢您的帮助!

c++ logic

9
推荐指数
1
解决办法
171
查看次数

为什么该类型为double而不是float?

问题:在一项家庭作业问题中(必须用笔在纸上完成,因此无需编码),我必须确定用C ++执行的加法的类型和值。

1 + 0.5
Run Code Online (Sandbox Code Playgroud)

我已经回答的是:

  • 输入float(因为我以为是integer + float = float
  • 值1.5(据我所知,当添加两个不同的数据类型时,相加的结果将转换为不会丢失任何信息的数据类型。)

解决方案说:

  • 类型:双
  • 价值:1.5

我的问题:为什么0.5是两倍而不是浮点数?如何区分浮点数和双精度数?我的意思是,0.5在我看来就像是浮点数和两倍。

c++ floating-point language-lawyer implicit-conversion

3
推荐指数
2
解决办法
160
查看次数