而且有內建我想要的 desktop manager 的版本
好吧理解不能,macos那麼麻煩的安裝方式你們都可以了
還有 arch 沒 network manager
arch這樣設計是有原因的,因為不只NM一種解決方案,也可以用systemd-network
順帶一提我記得這部分是有script可以用的,雖然我沒用過不確定他現在還有沒有在更新
喔我知道了,因為他的-2147483648是-(2147483648)
所以會變成-(-2147483648)
然後會變成什麼我就不知道惹🌝
根據我java常識他應該要是-2147483648
/c@mmis_js_bot#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main(void){
printf("%d\n", abs(-INT_MAX));
printf("%d\n", abs(INT_MIN));
return 0;
}
👍 Gооd nеws frоm thе Вinancе Exchangе!
📌 In hоnоr оf this еxchangе tеam annоuncеd AIRDROP amоng all participants оf thе crуptо cоmmunitу!
📌 Binancе has bееn in оpеratiоn fоr just shу оf twо уеars, and thе amоunt оf changеs that wе’vе bееn thrоugh in that pеriоd has bееn rеmarkablе. Wе’vе madе numеrоus rеassеssmеnts оn hоw wе can grоw furthеr, and оnе thing that kееps cоming up is оur cоmmitmеnt tо making оur usеr еxpеriеncе bеttеr!
📌 Wе havе cоmmittеd a tоtal оf 2 000 Bitcоin & 100 000 Ethеrеum tо givе awaу tо оur fans wоrldwidе!!
✅ Mоrе infо 👉👉
binanc.org
可是其實這就算overflow也沒差吧,這是編譯時期算掉的東西啊
stackoverflow跟我說因為2147483648是long,所以-2147483648不是int而是long🤔
不知道,總之就是他是int就會overflow兩次,不是他就會變成long這樣
就C(++) compiler的問題
-2147483648 => signed long 2147483648 with negative sign
因為parse的時候是把 - 拆開的啊
要把 - 跟數字parse在一起 還要讓他能獨立成 operator 很麻煩耶 (X
沒 因為你定義它是int (沒掛L suffix)
所以2147483648在compiler把它塞進binary的那時候就overflow了
不過這問題頗老了 比較新的c compiler應該早都修掉了 🤔
ruby有很久了好ㄇ 雖然是byte code vm
最近也變JIT惹
上面提到的數值表達問題我都還能理解,可是這跟 CPU 執行效率有什麼關聯?
這i家顯示卡爛掉的問題,停用能源最佳化讓他用A家卡就沒事了
因為不保證能用溢位的方式快速表達出 INT_MIN 所以才用了 -(INT_MAX) - 1 這種寫法
不能用溢位的方式快速表達出 INT_MIN ?
我如果想要快速表達 INT_MIN,這應該是個 constant 啊,為什麼我要考慮數值表達的快慢?
什麼失敗就直接放棄什麼,Google 墓碑又多了一個
WUT 所以你才在說啥
INT_MIN這常數用-2147483647-1而不是-2147483648來表示跟優化關係何在
是 -INT_MAX - 1
你484沒看完我貼的文
不 所以說根本問題就是 -2147483648 直接編成binary丟進instruction不就好了
問題就在C compiler做不到這件事啊
這是比優化更為之前的根本問題不是嗎
-2147483648 在寫asm的時候直接hardcode進instruction這點又不是不可能
明明實際上-2147483648就是個sign int可以塞進去的數字
但c compiler就是會解釋成 2147483648 w/ negative sign
然後2147483648 int塞不下 要不overflow 要不變成long
最後就變奇怪結果
明明打從一開始直接-2147483648整個編成0x80000000就沒這堆毛了難道不是嗎?
因為編譯器的 "-" 和 "2147483648" 是分開看的
"-" 不只是 Negative,還是 Subtract
剛剛試了下 就是clang看來依然是這樣
不過我想won’t fix應該很大部分是歷史因素
這隨便fix可能一堆優化有的沒的各種hack會噴到爽www
not a bug, it’s a feature (O
他會那樣寫的重點是在於沒法用 2147483647 + 1 來 100% 達成 === 0x80000000 === -2147483648 的這件事,然後 hardcode 2147483647 和 -2147483648 很蠢,且編譯器優化會被打爛,所以才會寫 -INT_MAX - 1 的
什麼蠢?
你看看CHAR_MIN, SHRT_MIN
不覺得INT_MIN看起來才蠢嗎?
所有MIN/MAX就除了INT_MIN不是hardcode的好嗎
歐 不對 LONG也一樣 因為也會overflow
再說對寫C的來說hardcode哪裡蠢了
為了效能都能整個表hardcode起來查了
那 UQUAD_MAX, QUAD_MAX , QUAD_MIN 咧
/* Quad constants must be written as expressions; #define GCC_ME_HARDER. */
#define UQUAD_MAX ((u_quad_t)0-1) /* max value for a uquad_t */
/* max value for a quad_t */
#define QUAD_MAX ((quad_t)(UQUAD_MAX >> 1))
#define QUAD_MIN (-QUAD_MAX-1) /* min value for a quad_t */
#define SIZE_T_MAX UINT_MAX
#endif
不過這個這樣寫也真的很黑人問號就是了,雖然我覺得故意這樣寫的主因大概是為了編譯器優化的問題,但是效能的話我還是覺得得看最後出來的 asm 才能判斷
#define LONG_MIN (-2147483647-1) /* min value for a long */
因為這東西沒const representation
# define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
# define LLONG_MIN (-LLONG_MAX-1) 也是
反正就各種hack啊
因為C的const representation就是有這個overflow的feature所以只能hack解決
論效能最穩定的不就hardcode
保證不開優化都能穩穩生出想要的asm
唯一前提是要compiler能生的出來