安静路过 发表于 2018-7-31 12:31:58

在测量实型变量这种情况下,为什么加双引号和不加双引号的结果是不同的?

#include <stdio.h>

int main ()
{
        printf("%i",sizeof(double));
}




#include <stdio.h>

int main ()
{
        printf("%i",“sizeof(double)”);
}



{:9_241:}

安静路过 发表于 2018-7-31 12:35:42

第二个代码中"sizeof(double)"    的英文双引号打不出来,所以我用中文的双引号代替{:9_229:}

小小小小的鱼丶 发表于 2018-7-31 13:11:54

sizeof是一个运算符,并不是函数,其作用就是返回一个对象或者类型所占的内存字节数。
sizeof(double) 是一个整型表达式,注意是表达式,就是计算double在系统中占几个字节,一般是8,返回的是一个整型
SO.加字符串只不过是把结果转成字符串的8而已

无符号整形 发表于 2018-7-31 15:17:03

输出sizeof(double)就是输出double的大小。
输出"sizeof(double)"就是"sizeof(double)"这个字符串中第一个字符在内存中的地址。
PS:建议楼主用%d代替%i,%i是老式写法。

关键是感觉 发表于 2018-7-31 15:20:47

本帖最后由 关键是感觉 于 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 22:35:03

无符号整形 发表于 2018-7-31 15:17
输出sizeof(double)就是输出double的大小。
输出"sizeof(double)"就是"sizeof(double)"这个字符串中第一个 ...

哦(⊙o⊙)
页: [1]
查看完整版本: 在测量实型变量这种情况下,为什么加双引号和不加双引号的结果是不同的?