![]() |
1
29
根据定义,sizeof(char)始终等于1。一个字节是C中字符的大小,不管字节中的位数是多少(普通桌面CPU上为8)。 一个字节不是8位的典型示例是 PDP-10 以及其他类似于小型计算机的旧体系结构,具有9/36位字节。但我相信,不是2^N的字节正变得极为罕见 此外,我认为这是更好的风格:
因为不管指针类型是什么,它都能工作。 |
![]() |
2
14
|
![]() |
3
12
我认为这是一种 anti-pattern . 这表明程序员不太清楚他/她在做什么,这立即使代码的其余部分变得可疑。 诚然,它不是(引用维基百科)“无效的”,但我确实发现它“远远不是最佳的”。它在运行时不需要花费任何费用,但它会在代码中塞满不必要的垃圾,同时发出有人认为有必要这样做的信号。
另外,请注意,表达式不会作为函数调用进行解析:
这是完全可能的,强烈建议尽可能使用
这会打印出来
名称
在一个
而不是
很多人会写一个N个字符容量的字符串缓冲区,我同意
或者(仅适用于字符串)省略
|
![]() |
4
7
虽然它不是必需的,但我认为在SIEZOF(char)中保留它是一个好的做法,因为它使代码更可读,并且避免使用神奇的数字。此外,如果代码需要在以后更改,以便将某个对象的大小转换为该对象的指针,而不是字符,那么更改代码要比仅使用“1”更容易。 |
![]() |
5
6
这是没有必要的。看见 here (例如)。
|
![]() |
6
3
另外需要记住的是,编译器静态地知道sizeof(char)的值是1,并且它还知道将一个数字乘以静态1意味着不需要进行乘法;编译器将对其进行优化。基于这些理由,不应考虑性能问题。 |
![]() |
7
3
|
![]() |
8
-4
使用sizeof(char)可以使代码更具可读性和可移植性。 在x86上,我们都知道字符是1字节。但是明确地写下来有助于让你的意图更加清晰,这总是一件好事。 另外,如果您的代码被放在其他平台上,其中一个字符不是1字节,该怎么办。如果一个字符只有4位呢? 同意,这是不必要的,但它不会降低运行时间,而且在罕见的情况下,您需要将代码移植到不同的体系结构,这会带来回报。 |
![]() |
Rajesh · 添加偏移量时数组名称上的sizeof运算符 6 年前 |
![]() |
fatdragon · 结构具有并集时的意外大小 7 年前 |
![]() |
razorozx · C++如何获取父数据类型的sizeof? 7 年前 |
![]() |
WonFeiHong · 通过sizeof会发生什么 7 年前 |
![]() |
Sato · 如何使gcc警告未定义的结构? 7 年前 |
![]() |
msc · C和C中sizeof算子的不同输出++ 7 年前 |
![]() |
Raul GrigoraÈcu · 指向数组最后一个元素的C指针 7 年前 |