许多快乐的回报 [英] Many Happy Returns

查看:71
本文介绍了许多快乐的回报的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

#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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆