欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: unsigned char 和 signed char的使用疑惑 [打印本頁]

作者: WGL88    時間: 2019-6-3 09:47
標(biāo)題: unsigned char 和 signed char的使用疑惑
各位大咖,我是小白,有個疑問請教下:

以下這個代碼中,i用的是signed char,可以改成用unsigned char嗎?為什么?我一直搞不懂什么時候該用unsigned char,什么時候該用signed char。謝謝!

void ShowNumber(unsigned long num)
{
   signed char i;
   unsigned char buf[6];

    for(i=0; i<6; i++)   //把長整型數(shù)轉(zhuǎn)換為6位十進(jìn)制的數(shù)組
   {
       buf[i] = num % 10;
       num = num / 10;
   }
    for(i=5; i>=1; i--)   //從最高位起,遇到0轉(zhuǎn)換為空格,遇到非0則退出循環(huán)
   {
       if(buf[i] == 0)
              LedBuff[i] = 0xFF;
       else
              break;
   }

    for( ; i >= 0; i--)   //剩余低位都如實轉(zhuǎn)換為數(shù)碼管顯示字符
    {
          LedBuff[i] = LedChar[ buf[i] ];
    }
}

作者: lele5211314    時間: 2019-6-3 13:20
一個是有符號的范圍是-128 - 127; 一個是無符號的 范圍是 0 - 255
作者: suncat0504    時間: 2019-6-3 13:54
對于一個字節(jié)寬度的變量:
范圍介于0~255的,使用unsigned。
范圍介于-128~127的,使用signed。
作者: 木佑111    時間: 2019-6-3 16:13
unsigned:無符號的;unsigned char數(shù)據(jù)范圍為0~255;
signed:有符號的;signed char數(shù)據(jù)范圍是-128~127;
兩個的使用取決于你要使用的數(shù)據(jù)的范圍,當(dāng)要用到負(fù)數(shù)時且范圍不超過-128時,使用signed char;當(dāng)不用到負(fù)數(shù)且范圍不超過255時,使用unsigned char
作者: 幻劍心    時間: 2019-6-3 17:10
signed 是有符號的,也就是有負(fù)值。unsigned是無符號的,沒有負(fù)值。在某些情況下,for循環(huán)只能用有符號的。其實我覺得for循環(huán)中的循環(huán)變量最好用有符號數(shù) char不夠用用int,再不夠用long。除非必要,最好不要用unsigned的變量。給大家一個有趣的程序玩玩(是在VS2017上寫的,要換其它編譯軟件,只要把pch.h改成相應(yīng)的頭文件就行,一般好像是studio.h):
#include "pch.h"
#include <iostream>
using namespace std;


int main()
{
//        unsigned char i;//i換成unsigned char型就會變成死循環(huán)
        signed char i;
        for (i = 7; i > 0; i--) {
                cout << "i=" <<int(i) << endl;
                i--;
        }
   
}

作者: 黃不煩    時間: 2019-6-3 20:29
unsigned char的數(shù)據(jù)范圍是0~255,unsigned int數(shù)據(jù)范圍是–128~127存在負(fù)值。適用范圍不同,如果用到復(fù)數(shù)就用unsigned char
作者: Dinosaur_    時間: 2019-6-3 22:01
unsigned是無符號的,unsigned char的數(shù)據(jù)范圍是0到255
signed是有符號的,signed char數(shù)據(jù)范圍是-128到127
具體根據(jù)你的使用來
作者: cjm82    時間: 2019-6-4 01:13
unsigned char 的值是0-255
比如
unsigned char a = 0;
unsigned char b = 255;
a--;
b++;
執(zhí)行后,a為255, b為0.
如果用unsigned 類型的做循環(huán)判斷變量時,一定要注意不能以 a<0或者 a<=255作為條件,否則就會成死循環(huán).一般循環(huán)變量同時用作數(shù)組下標(biāo)時,容易出現(xiàn)這種錯誤.

作者: yzwzfyz    時間: 2019-6-4 08:44
本帖最后由 yzwzfyz 于 2019-6-4 11:28 編輯

記住:在芯片內(nèi)部沒有正負(fù)之分,它就是個8位二進(jìn)制數(shù),最小00000000B=0,最大11111111B=255,
如果必須表達(dá)負(fù)數(shù),怎么辦?芯片內(nèi)部沒有“負(fù)號”,所以就定義用8位中的首位作為“負(fù)號”,且“1”=負(fù),“0”表示正,這樣就形成所謂的有符號數(shù)了:
正數(shù)范圍0-0000000B=0,0-1111111B=127,
自然負(fù)數(shù)的范圍就是:1-0000000B至1-1111111B,
負(fù)數(shù)有兩種表示方案:
第一種:1-0000000B=-0=0、1-1111111B=-127;好處是直觀,缺點-0=0,與0-0000000B重復(fù),浪費了。其表達(dá)范圍只有255個數(shù)(-127至+127)。
第二種:1-0000000B=-128、1-1111111B=-1;好處是表達(dá)范圍比第一種多出一個,256個數(shù)(-128至+127)。
第二種是標(biāo)準(zhǔn)表達(dá)方式!
但不要認(rèn)為第一種就是錯的,在某此場合下它還是比較實用的。這要看你最終是如果翻譯。不建議采用第一種,至少目前C不支持它,只能在匯編在應(yīng)用。

作者: WGL88    時間: 2019-6-5 09:02
謝謝各位!
作者: somesun    時間: 2019-6-5 10:03
unsigned是無符號的,singed是有符號的




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1