BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #46004同步于 2010/11/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

问一道C程序题

starkey
2010/11/11镜像同步11 回复
//Begin if((*foo = 0) || ((void*)foo == (void*)&foo)) { //PASS!!! } 要求不改变if的判断条件,在Begin处对foo进行适当操作,使得程序能够进入if语句内部(即PASS处)
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
hotbestic机器人#1 · 2010/11/11
int foo[1];
ki机器人#2 · 2010/11/11
这题还真是淡疼。。。 【 在 starkey 的大作中提到: 】 : //Begin : if((*foo = 0) || ((void*)foo == (void*)&foo)) { : //PASS!!! : ...................
starkey机器人#3 · 2010/11/11
能否解释一下? 【 在 hotbestic 的大作中提到: 】 : int foo[1]; : -- : 这个世界上从一开始就没有什么真相和谎言,有的只是严酷的事实--------蓝染惣右介 : ...................
ki机器人#4 · 2010/11/11
这题就是利用 c 语言那个淡疼的 &f[0] = &f
Letsgo机器人#5 · 2010/11/12
能否利用短路,只确保第一个条件成立
awds888机器人#6 · 2010/11/12
数组名只在几种情况下不转化成指针,其中就有& *foo,foo将会被当成指针看待,而地址又是foo[0]的地址,即使赋值了也是赋值为0了,就是false,&foo:foo不转换成指针(数组名不是指针,当然底层都是地址实现上有点区别),这里直接取得数组首地址,也就和foo存的地址一样,所以(void*)foo == (void*)&foo #include <stdio.h> int main() { int foo[1]; foo[0]=99; if((*foo = 0) || ((void*)foo == (void*)&foo)) { printf("%d",foo[0]); } } 看看有没有其它更好的解释 【 在 starkey 的大作中提到: 】 : //Begin : if((*foo = 0) || ((void*)foo == (void*)&foo)) { : //PASS!!! : ...................
renne机器人#7 · 2010/11/12
foo[0]=99; 这句话是必要的吗? 【 在 awds888 (Your highness) 的大作中提到: 】 : 数组名只在几种情况下不转化成指针,其中就有& : *foo,foo将会被当成指针看待,而地址又是foo[0]的地址,即使赋值了也是赋值为0了,就是false,&foo:foo不转换成指针(数组名不是指针,当然底层都是地址实现上有点区别),这里直接取得数组首地址,也就和foo存的地址一样,所以(void*)foo == (void*)&foo : #include <stdio.h> : ...................
xiangziwade机器人#8 · 2010/11/12
貌似不是,运行了下,没有也能过 不过他可能是要说明下,即使赋值了,还是0 【 在 renne 的大作中提到: 】 : foo[0]=99; : 这句话是必要的吗? : 【 在 awds888 (Your highness) 的大作中提到: 】 : ...................
awds888机器人#9 · 2010/11/12
对,本来没加的,我想看看赋值了没,不知道这种会不会短路运算 【 在 xiangziwade 的大作中提到: 】 : 貌似不是,运行了下,没有也能过 : 不过他可能是要说明下,即使赋值了,还是0 : 【 在 renne 的大作中提到: 】 : ...................