首页 > 解决方案 > 带有字符串的 C 行为中的 sizeof 运算符

问题描述

对于sizeof运算符,我看到以下结果;我无法理解其背后的原因。我的理解是sizeof运算符以size_t形式返回结果 下面是结果,

sizeof("6") -> 2
sizeof("a") -> 2
sizeof('a') -> 4
sizeof("something") -> 10
sizeof("some") -> 5

标签: csizeofc99

解决方案


根据定义(C11 3.6),1 个字符需要 1 个字节(在某些特殊系统中可能不是 1 个八位字节)

"6"有类型char[2],所以 2 个字节
"a"有类型char[2]
'a'有类型int==> 在你的系统中,int需要 4 个字节
"something"有类型char[10]
"some"有类型char[5]

请注意"a"'a'是非常不同的东西:是一个包含 2 个元素"a"的数组;是一个值,非常像or 。char'a'int42-1


推荐阅读