在测量实型变量这种情况下,为什么加双引号和不加双引号的结果是不同的?
#include <stdio.h>int main ()
{
printf("%i",sizeof(double));
}
#include <stdio.h>
int main ()
{
printf("%i",“sizeof(double)”);
}
{:9_241:} 第二个代码中"sizeof(double)" 的英文双引号打不出来,所以我用中文的双引号代替{:9_229:} sizeof是一个运算符,并不是函数,其作用就是返回一个对象或者类型所占的内存字节数。
sizeof(double) 是一个整型表达式,注意是表达式,就是计算double在系统中占几个字节,一般是8,返回的是一个整型
SO.加字符串只不过是把结果转成字符串的8而已 输出sizeof(double)就是输出double的大小。
输出"sizeof(double)"就是"sizeof(double)"这个字符串中第一个字符在内存中的地址。
PS:建议楼主用%d代替%i,%i是老式写法。 本帖最后由 关键是感觉 于 2018-7-31 15:24 编辑
假设内存空间
#include <stdio.h>
int main ()
{
char * s;
printf("%d\n",s="sizeof(double)");
printf("%s",s);
}
打印"sizeof(double)"其实就是给printf传入一个地址,你用%i解析这个地址,那么就输出这个地址值
sizeof(double)不一样 他传入是一个值,所以输出的是一个值。当然你也可以用其他格式字符去解析,但是报错是应该
int main (){
char * s="abcdef";
printf("%c",*(s+sizeof(int)));
}
无符号整形 发表于 2018-7-31 15:17
输出sizeof(double)就是输出double的大小。
输出"sizeof(double)"就是"sizeof(double)"这个字符串中第一个 ...
哦(⊙o⊙)
页:
[1]