gpt4 book ai didi

c++ - 将 unsigned int 初始化为 0?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:15 45 4
gpt4 key购买 nike

在代码库里,经常看到有人写

void f(unsigned int){/* some stuff*/ }; // define f here
f(0) // call f later
unsigned int a = 0;
double d = 0;

初始化数字(此处为 0)与声明类型不匹配让我很烦,如果这是性能关键代码,这种初始化是否会影响性能?

编辑对于反对者:

发问题前搜索了一下,c++以隐藏规则出名,直到有人在这个问题下发表评论,我才知道整数提升规则。对于那些说“即使是愚蠢的编译器也不会在运行时进行转换”的人,下面是来自 this answer 的示例

 float f1(float x) { return x*3.14; }            
float f2(float x) { return x*3.14F; }

这两个版本有不同的性能,对于一个没有经验的 c++ 程序员来说,我看不出我的问题和这个例子有什么不同。而 C++ 以隐藏规则和陷阱而闻名,这意味着直觉有时是不正确的,那么为什么问这样的问题会被否决呢?

最佳答案

你是对的,0 是一个 int,不是 double(0. 应该是)也不是 unsigned 整数。这在这里并不重要,因为 int 可以隐式转换为这些类型,而 0 可以由它们完美地表示。也没有性能影响;编译器在编译时完成所有工作。

关于c++ - 将 unsigned int 初始化为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43662232/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com