在C / C ++中,说(1U)
与((unsigned int)1)
之间有区别吗?我更喜欢第二个,但我担心第二个可能在运行时进行类型转换(即额外的cpu周期),而第一个在编译时得到正确的类型。感谢。
答案 0 :(得分:5)
他们不等同。 1U
在#if
预处理指令中有效。 (unsigned int)1
是预处理器级别的语法错误。然而,你可以使它(unsigned)+1
并且它在预处理器中是有效的,但仅仅是因为很少有人知道的模糊规则。
答案 1 :(得分:1)
我认为你没事。 (1U)我怀疑编译器的词法分析会将其识别为“unsigned”,而(unsigned int)1将是运行时操作。 正如评论所说的那样,无论如何都有可能为你优化。
作为一般规则,不要试图想出编译器。做一些看起来最具可读性的内容,一旦明确出现问题就会担心性能优化。 我可以保证*这实际上永远不会给你带来麻烦。
*保证在以Y结尾的日期无效。
答案 2 :(得分:0)
11个字符。否则,它们是等价的。