| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2123 人关注过本帖
标题:sizeof用法!
只看楼主 加入收藏
柔美
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-4-5
收藏
 问题点数:0 回复次数:16 
sizeof用法!

谁知道下面的程序为什么不能编译:谢谢!

#include<stdio.h>
#include<conio.h>

int main(void)
{
int byte;
float *p,i=10.5;

p=&i;
byte=sizeof(int)(*p);
printf("byte=%d\n",byte);

getch();
return 0;
}

搜索更多相关主题的帖子: sizeof 用法 
2006-04-06 15:30
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

汗...你要干什么?~~

要 i 的长度? 还是 int 的长度?~~或者还是要他们的长度和? 还是....?


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-06 15:46
柔美
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-4-5
收藏
得分:0 

上面为什么不能编译


MSN::zhengmeier@ Email::chentianqiao06@ TM::619969970
2006-04-06 16:02
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
这事你得去问编译器.

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-06 16:10
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 
以下是引用柔美在2006-4-6 15:30:00的发言:

谁知道下面的程序为什么不能编译:谢谢!

#include<stdio.h>
#include<conio.h>

int main(void)
{
int byte;
float *p,i=10.5;

p=&i;
byte=sizeof((int)(*p)); /*此处是个语法错误,应该加括号,结果:转换为 int 类型是 2 字节*/
printf("byte=%d\n",byte);

getch();
return 0;
}



TC2.1下报告的错误是:
调用未定义的函数。

这说明:
byte = sizeof(int) (*p) 会被编译器认为:
sizeof(int) 为一个整体,得2,
原表达式就变为 byte = 2(*p);
2(*p) 便是个语法错误的语句,
假若忽略此错误的存在性(如标识符、声明及定义等错误),认为其是正确的,
那么 2(*p) 即 2(10.5) 将看做一个函数的调用,
TC 找不到此“函数”。

—— 这是错误的。

让编译器知道 (int)(*p) 是一个整体,须以括号括起。

[此贴子已经被作者于2006-4-6 18:14:35编辑过]


欢迎加入 MVC 技术讨论群(新群:90093426)
2006-04-06 16:35
giant
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-11
收藏
得分:0 
都说的什么啊!楼主问的是为什么不能通过编译,看明白再回答.

估计跟sizeof运算符的操作数有关系

2006-04-06 17:16
西牛616
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-4-6
收藏
得分:0 
是呀
2006-04-06 17:23
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
byte = sizeof(int) (*p) 会被编译器认为:
sizeof(int) 为一个整体,得2,
原表达式就变为 byte = 2(*p);
2(*p) 便是个语法错误的语句,
假若忽略此错误的存在性(如标识符、声明及定义等错误),认为其是正确的,
那么 2(*p) 即 2(10.5) 将看做一个函数的调用,
TC 找不到此“函数”。
5楼的解释我没有看明白,能再具体一点吗?

2006-04-06 18:53
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
zhangjuan说得没错~~
恩,那我不是没话说了....

补充一点
sizeof是可以用来求数组的长度的,当然,前提是那个堆是在本函数内调用的

淘宝杜琨
2006-04-06 19:01
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
不是我说的

2006-04-06 19:02
快速回复:sizeof用法!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019961 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved