鱼C论坛

 找回密码
 立即注册
查看: 1802|回复: 5

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

[复制链接]
发表于 2018-7-31 12:31:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>

  2. int main ()
  3. {
  4.         printf("%i",sizeof(double));
  5. }
复制代码




  1. #include <stdio.h>

  2. int main ()
  3. {
  4.         printf("%i",“sizeof(double)”);
  5. }
复制代码



最佳答案
2018-7-31 15:20:47
本帖最后由 关键是感觉 于 2018-7-31 15:24 编辑

假设内存空间
2.png
  1. #include <stdio.h>

  2. int main ()
  3. {
  4.         char * s;
  5.     printf("%d\n",s="sizeof(double)");  
  6.         printf("%s",s);
  7. }
复制代码


打印"sizeof(double)"其实就是给printf传入一个地址,你用%i解析这个地址,那么就输出这个地址值
sizeof(double)不一样 他传入是一个值,所以输出的是一个值。当然你也可以用其他格式字符去解析,但是报错是应该
  1. int main (){
  2.         char * s="abcdef";   
  3.         printf("%c",*(s+sizeof(int)));
  4. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-31 12:35:42 | 显示全部楼层
第二个代码中"sizeof(double)"    的英文双引号打不出来,所以我用中文的双引号代替
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-31 13:11:54 | 显示全部楼层
sizeof是一个运算符,并不是函数,其作用就是返回一个对象或者类型所占的内存字节数。
sizeof(double) 是一个整型表达式,注意是表达式,就是计算double在系统中占几个字节,一般是8,返回的是一个整型
SO.加字符串只不过是把结果转成字符串的8而已
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-31 15:17:03 | 显示全部楼层
输出sizeof(double)就是输出double的大小。
输出"sizeof(double)"就是"sizeof(double)"这个字符串中第一个字符在内存中的地址。
PS:建议楼主用%d代替%i,%i是老式写法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-31 15:20:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 关键是感觉 于 2018-7-31 15:24 编辑

假设内存空间
2.png
  1. #include <stdio.h>

  2. int main ()
  3. {
  4.         char * s;
  5.     printf("%d\n",s="sizeof(double)");  
  6.         printf("%s",s);
  7. }
复制代码


打印"sizeof(double)"其实就是给printf传入一个地址,你用%i解析这个地址,那么就输出这个地址值
sizeof(double)不一样 他传入是一个值,所以输出的是一个值。当然你也可以用其他格式字符去解析,但是报错是应该
  1. int main (){
  2.         char * s="abcdef";   
  3.         printf("%c",*(s+sizeof(int)));
  4. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-31 22:35:03 | 显示全部楼层
无符号整形 发表于 2018-7-31 15:17
输出sizeof(double)就是输出double的大小。
输出"sizeof(double)"就是"sizeof(double)"这个字符串中第一个 ...

哦(⊙o⊙)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-10 02:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表