为什么SIZE_OF_STR为“ hello”字符串返回7和5个值?
#include <stdio.h>
#define SIZE_OF_STR(s) sizeof(s)/sizeof(char)-1
int main()
{
char *x = "hello";
printf("%d\n",SIZE_OF_STR(x));
printf("%d",SIZE_OF_STR("hello"));
return 0;
}
输出:
7
5
答案 0 :(得分:5)
第一个sizeof实际上是做一个指向char的指针的sizeof,它是8。
第二个方法是执行常量字符串的sizeof,它为“ hello”产生6。
您的宏表达式实际上在减法之前解决了除法问题,因此导致8-1 = 7和6-1 = 5。