【问题标题】:Is it correct to write size_t num = 0?写 size_t num = 0 是否正确?
【发布时间】:2021-05-14 18:53:37
【问题描述】:

我正在编写一个 C 程序,其中我使用 size_t 来存储数值,正如互联网上所说,size_t 只能存储 unsigned 值。

那么可以将0 存储在其中吗??

size_t num = 0;

【问题讨论】:

  • 是的,你甚至可以存储-0
  • 您在什么意义上担心 0 不是无符号值?一个朴素的整数文字 0 的类型是(有符号的)int?还是别的什么?

标签: c integer unsigned size-t


【解决方案1】:

是的,没关系。

C17 6.7.9 (11):

标量的初始值设定项应该是一个表达式,可选地用大括号括起来。初始值 对象的对象是表达式的对象(转换后); 相同的类型约束和转换 至于简单赋值应用,将标量的类型作为其非限定版本 声明类型。

6.3.1.3 (1) 说:

当一个整数类型的值转换为 _Bool 以外的另一个整数类型时,如果该值 可以用新的类型来表示,它是不变的。

0int 类型的表达式,其值为数字零。零值当然可以用size_t 表示,所以这就是它的初始化值。

如果你更喜欢美学上的签名匹配,你可以写size_t num = 0U;,但它的效果是一样的。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2013-09-19
    • 1970-01-01
    • 2015-11-24
    相关资源
    最近更新 更多