永发信息网

printf("%d",sizeof((int)a)/sizeof(&a[1]));

答案:2  悬赏:20  手机版
解决时间 2021-02-13 00:13
double a[3]={1,2,3};

printf("%d",sizeof((int)a)/sizeof(&a[1]));这样写为什么可以
printf("%d",sizeof((double)a)/sizeof(a[1])); 为什么无法从“double [3]”转换为“double”

int a[3]={1,2,3};

printf("%d",sizeof((int)a)/sizeof((int)a[1]));这样写为什么可以
最佳答案
强制类型转换并不是“全能”的,就是说这种转换对某些类型转换为另一种类型是不能操作的。这题目中的错误提示已经说得很明确:不能将“double [3]”转换为“double”,意思就是不能把一个双精度数组地址值转换为浮点数——实践中,把地址值转换为浮点有何意义?但转换为int是有意义的,所以只允许(int)a而不允许(double)a。若确实需要强制为double型,那可以这样写(double)(int)a——因为地址强制为int型是合法的,而int型强制为double型也是合法的。上述这些可能还与编译器有关,有的编译器也许会允许地址直接强制为浮点型的。
全部回答
int *a,*b,*c;这个是定义三个指向int的指针。。。 a=b=c=(int*)malloc(sizeof(int)); 分配一个保存int的空间。。。。相当于这个时候a,b,c是指向内存中同一个空间的。。。 *a=1;*b=2;*c=3;a=b; 执行*a = 1时,*b,*c也都是1 同样的执行*b = 2时,*a,*c也都是2 最后*c=3;,*a,*b也都是3 因为它们三个指向的是同一个空间。。。。所以取值是相同的。。。 希望对你有帮助。。。。仍有问题可以hi我。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中国联通(秦栏第二营业厅)地址有知道的么?有
w10系统怎么取消开机密码
初中可以考广州美术学院
日本家庭都用榻榻米,不睡床.不用地板砖吗?
高庄陈金源电信代理点地址在什么地方,想过去
临夏市圣辉贸易有限责任公司我想知道这个在什
1200斤的大牛多少钱一斤
视频聊天时能听到自己的回音?怎么回事?请高
山海科技电信代理点地址好找么,我有些事要过
华鑫静音滑动门地址有知道的么?有点事想过去
12.关于土壤,下列说法不正确的是 A.从岩石变
上海师范大学生物化学与分子生物学复试看什么
Windows 7及以上版本的64位系统是什么意思
龙泉路/龙泉南路(路口)在哪里啊,我有事要去
女方父母不同意就要分手吗?
推荐资讯
温胆汤的功用是A.清热化痰B.温肺化痰C.燥湿化
什么是边决权
哆啦A梦里的大雄最后怎么了????
逍客的标准胎压是多少
第一行1、2、5、10,第二行4、3、6、11,第三
将一根长1米的绳子绕一根钢管5圈还余37.2厘米
开始忘记关燃气阀了,在后来就点不着火了,怎
有彩色激光打印机 打印照片的纸吗
股市放量是什么意思
火星在白羊座
单反相机使用复杂么
我驾驶证是B2于2012年7月27曰提交了体检表,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?