当前位置: 首页 > 知识库问答 >
问题:

为什么常见的布尔和int8_t类型是C中的int32_t?

江仲渊
2023-03-14

我对C中内置布尔类型的一些行为感到好奇。据我所知,std::common_type使用隐式可转换性确定通用类型。我希望带有 bool 和另一种类型的表达式会导致 bool 转换为该类型。例如,我可以看到布尔浮子 -

共有1个答案

和飞翔
2023-03-14

简答:积分推广。

在数值算术中,如果所有可能的值都符合int,则小整数类型(包括boolcharsigned charshortunsigned short等)被提升为int,否则它们被提升为unsignedint

在今天的大多数机器上,int32_tint。在<code>bool int8_t的情况下,两者都升级为<code>int。

 类似资料:
  • 我正在尝试获取3个布尔变量和1个int变量的输入。即使我给出了正确的输入,它的行为也不正确。 我正在使用作为 中的格式说明符,如@taufique在扫描中的格式说明符中建议,用于 C 中的布尔数据类型 以下是我的代码及其行为: 慰问: 对于其他一些输入: 但是,当使用临时整数变量来获取@ouah在扫描中相同的格式说明符中获取C中布尔数据类型的输入时,它工作正常。 那么,为什么scanf行为不当呢?

  • 在C语言中,关系运算和逻辑运算的结果有两种,真和假:0 表示假,非 0 表示真。例如: 运行结果: 10 20↙ flag = 0 C语言并没有彻底从语法上支持“真”和“假”,只是用 0 和非 0 来代表。这点在 C++ 中得到了改善,C++ 新增了 bool 类型(布尔类型),它一般占用 1 个字节长度。bool 类型只有两个取值,true 和 false:true 表示“真”,false 表示

  • 本文向大家介绍C ++中的变量和变量类型是什么?,包括了C ++中的变量和变量类型是什么?的使用技巧和注意事项,需要的朋友参考一下 变量为我们提供了程序可以操纵的命名存储。C ++中的每个变量都有一个特定的类型,该类型确定变量的内存大小和布局。可以存储在该内存中的值的范围;以及可以应用于该变量的一组操作。一个非常简单的变量示例是- 在这里,我们有一个变量my_val,类型为int(integer)

  • 我有一个方法,它检查一个对象是否已经存在于数组列表中,如果存在,则用新对象替换索引,如果不存在,则添加新对象。 当我编写方法时,我没有返回类型。我收到一个错误,建议我将返回类型设置为void,所以我就这样做了。然后我得到了另一个错误,返回类型必须是布尔的。我唯一的问题是方法本身本质上(至少对我来说)不是true/false返回。我需要它做的只是在ArrayList中添加/替换一个对象,而不是返回任

  • 我正在阅读有关C++11新特性的维基百科页面,但不理解有关类型别名的这一部分:https://en.wikipedia.org/wiki/c%2b%2b11#template_aliases using语法也可以用作C++11中的类型别名: typedef void(*FunctionType)(double);//旧样式 使用FunctionType=void(*)(double);//新引入的

  • 当我跑的时候 我在Java中得到错误。为什么?这相当于false==false,这是真的。这不是Java特有的,我在其他语言中也得到了相同的结果。这是因为短路评估吗?似乎左右双方仍会/应该进行比较。