日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

printf(%d, -10u); 这个输出什么呀, 0或1?

發(fā)布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 printf(%d, -10u); 这个输出什么呀, 0或1? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("%d", -1<0u); 這個輸出什么呀, 0或1?

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?周銀輝?

?

既然我這么問了, 那么答案自然不是1,而是0
看看下面的代碼:
?

對于-1+0u輸出為-1,似乎理所當然,但為什么-1<0u卻輸出0呢,也就是說-1不小于0u,好神奇啊

一個解釋是:“當執(zhí)行一個運算時, 如果它的一個運算數(shù)是有符號的而另一個是無符號的,那么C會隱含地將有符號參數(shù)強制類型轉(zhuǎn)換為無符號數(shù),并假設這兩個數(shù)都是非負的,來執(zhí)行這個運算” (來自《深入理解計算機系統(tǒng)(修訂版)49頁》),-1的有符號表示為1111....1111(N個1,N取決于位寬,我們假設32個吧),如果強制解釋為無符號數(shù),那么就是2^32:?4294967296 ,當然比0大咯,所以輸出0(false)
當,我暈,在執(zhí)行-1+0u運算時,C似乎又不愿意采用這種方式了,而是(我猜的)將0u采用“零擴展”的方式向上轉(zhuǎn)型為有符號數(shù)的0,那么-1+0,就自然得到-1了

這兩種解釋似乎是矛盾的, 我很奇怪在運算-1<0u時為啥不用“零擴展”向上轉(zhuǎn)型,而輸出1呢,我們也希望得到1,對吧~

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/zhouyinhui/archive/2010/06/17/1759396.html

總結(jié)

以上是生活随笔為你收集整理的printf(%d, -10u); 这个输出什么呀, 0或1?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。