uri Casting magpasinda sa unsigned int (sa C)

E

emresel

Guest
Kamusta sa lahat; ako sinusubukan upang magpakita ng isang pansamantalang trabaho na halaga bilang isang hindi linagdaan integer sa screen;
Code:
 magpasinda isang = 255; unsigned int b; / / Pagkatapos na nais i-print sa screen; b = (unsigned int) ang isang; printf ("halaga ay% d bilang sign,% u bilang unsigned \ n", b, b);
output ay;
halaga ay -1 bilang sign, 4294967295 bilang unsigned
"halaga ay -1 bilang sign "ay isang inaasahang output, dahil 255 ay -1 bilang itinuturing na sign numero. kung bakit hindi ko makita ang "255 bilang unsigned"? Bakit 4294967295 nakalimbag sa screen? Paano ko maaaring makamit ito? Salamat
 
Kumusta emresel Dahil kapag type mo palayasin ito sa unsigned int, ito ay nagko-convert ito sa pinakamataas na hanay. sign magpasinda hanay ay -128 sa 127, o hindi linagdaan magpasinda ay 0 hanggang 255. Parehong para sa unsigned int hanay 0 hanggang 2 ^ 32. Kaya ito ay nagko-convert ito sa pinakamataas na halaga ng is 2 ^ 32. subukan ito magpasinda c = 250 subukan i-convert ito sa unsigned int mo ng (2 ^ 32) -5. Sana ito ay makakatulong sa iyo.
 
Hindi ko maintindihan kung bakit ang tagatala sa pc ay kumilos tulad nito, sa avrgcc halimbawa ito gumagana multa at ang halaga ay ang parehong (100 o 0x64 o 0x0064) at para sa mga negatibong numero (-100 o 0x9C na o 0xFF9C)
Code:
 salawahan magpasinda c = 100; maigahin na int cc; cc = (unsigned int) c / / o cc = c
ang resulta ay ang parehong para sa
Code:
 salawahan sign magpasinda c = 100; maigahin na sign int cc; cc = (sign int) c / / o cc = c
o
Code:
 salawahan sign magpasinda c = -100; maigahin na sign int cc; cc = (sign int) c / / o cc = c
Alex
 
Kumusta yanamaddinaveen; talaga ito pagdating sa akin kakaiba, sa PC lang gawin "1" padding sa kaliwa ng numero upang baguhin ito sa unsigned. Tulad ng sinabi mo, parang; ie 250 bilang magpasinda (sa bin) 11,111,010; 250 bilang uint (sa bin) 111111111111111111111111 11,111,010 , kapag gawin uri ng kast; Ngunit ito ay nagbibigay tanda sa akin; ko unang uri kast magpasinda sa unsigned pansamantalang trabaho, at pagkatapos ay hindi linagdaan magpasinda sa unsigned int. Pagkatapos ito nagtrabaho!
Code:
 b = (unsigned int) ((hindi linagdaan magpasinda) a);
Salamat
 
Kung ito ang kaso pagkatapos ng pansamantalang trabaho "ng" variable sa iyong kaso ay itinuturing na isang sign magpasinda at na ang dahilan kung bakit ikaw ay makakuha ng isang error. Aking IDE ay may isang setting at mga pansamantalang trabaho na paraan hindi linagdaan magpasinda ngunit ipagpalagay ko na ang default na pag-uugali ng GCC ay magpasinda kahulugan ng sign magpasinda. Sinubukan mo sa hindi linagdaan magpasinda isang = 255?
 
Hi; Oo alexan_e; Bilang i tukuyin ang "isang" bilang uchar pagkatapos ay walang problema. Sinubukan ko din tulad ng na sa susunod. Ngunit sa maaaring sakaling makatanggap i return "magpasinda" uri mula sa isang library. Iyon ay ang paraan na nais ko upang subukan ang uri kast magpasinda sa uint.
 

Welcome to EDABoard.com

Sponsor

Back
Top