许多快乐的回报 [英] Many Happy Returns
问题描述
#include< stdio.h>
int main(无效)
{
printf(" Happy)生日,Dennis Ritchie。%d today.\
",~0& 0x1f<< 1);
返回0;
}
-
Richard Heathfield: bi****@eton.powernet .co.uk
Usenet是一个奇怪的地方。 - Dennis M Ritchie,1999年7月29日。
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K& R答案,C书等:< a rel =nofollowhref =http://users.powernet.co.uk/etontarget =_ blank> http://users.powernet.co.uk/eton
Richard Heathfield< do ****** @ address.co.uk.invalid>写道:
#include< stdio.h>
int main(void)
{
printf(生日快乐) ,Dennis Ritchie。%d today.\
",~0& 0x1f<< 1);
返回0;
}
这个程序不会导致不确定的行为吗?
Martin
Martin Dickopp写道:
Richard Heathfield< do ****** @ address.co.uk.invalid>写道:
#include< stdio.h>
int main(void)
{
printf(生日快乐) ,Dennis Ritchie。%d today.\ n,0& 0x1f<< 1);
返回0;
}
没有''这个程序会导致未定义的行为吗?
#include< stdio.h>
int main(void)
{
printf(生日快乐,Dennis Ritchie。%u today.\ n,〜0u& 0x1f<< 1);
返回0;
}
-
pete
< blockquote> Richard Heathfield< do ****** @ address.co.uk.invalid>在消息新闻中写道:< bj ********** @ titan.btinternet.com> ...
#include< stdio.h>
int main(void)
{/> printf(生日快乐,Dennis Ritchie。%d today.\ n,〜0& 0x1f<< 1);
返回0;
}
我可以看到为什么~0将为-1,因为〜反转所有位,所以你的签名
bit最终代表负数,你的值位代表1.
但是为什么0x1f等于某个-1.994942数?我在想0x1f
对于%f而言等于1.000000而对于%d仅为1,但它不会。
为什么会这样?
#include <stdio.h>
int main(void)
{
printf("Happy Birthday, Dennis Ritchie. %d today.\n", ~0&0x1f<<1);
return 0;
}
--
Richard Heathfield : bi****@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
Richard Heathfield <do******@address.co.uk.invalid> writes:
#include <stdio.h>
int main(void)
{
printf("Happy Birthday, Dennis Ritchie. %d today.\n", ~0&0x1f<<1);
return 0;
}
Doesn''t this program cause undefined behavior?
Martin
Martin Dickopp wrote:
Richard Heathfield <do******@address.co.uk.invalid> writes:#include <stdio.h>
int main(void)
{
printf("Happy Birthday, Dennis Ritchie. %d today.\n", ~0&0x1f<<1);
return 0;
}
Doesn''t this program cause undefined behavior?
#include <stdio.h>
int main(void)
{
printf("Happy Birthday, Dennis Ritchie. %u today.\n", ~0u&0x1f<<1);
return 0;
}
--
pete
Richard Heathfield <do******@address.co.uk.invalid> wrote in message news:<bj**********@titan.btinternet.com>...#include <stdio.h>
int main(void)
{
printf("Happy Birthday, Dennis Ritchie. %d today.\n", ~0&0x1f<<1);
return 0;
}
I can see why ~0 would be -1 since ~ inverts all bits, so your signed
bit ends up representing a negative and your value bits represent 1.
But why does 0x1f equal to some -1.994942 number? I was thinking 0x1f
would be equal to 1.000000 for %f and for %d just 1, but it doesn''t.
Why is this?
这篇关于许多快乐的回报的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!