久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

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

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

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

    for(i=0; i<6; i++)   //把長(zhǎng)整型數(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--)   //剩余低位都如實(shí)轉(zhuǎn)換為數(shù)碼管顯示字符
    {
          LedBuff[i] = LedChar[ buf[i] ];
    }
}

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


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

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

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

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

作者: WGL88    時(shí)間: 2019-6-5 09:02
謝謝各位!
作者: somesun    時(shí)間: 2019-6-5 10:03
unsigned是無(wú)符號(hào)的,singed是有符號(hào)的




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 免费在线观看黄色av | 天天干天天操 | 男女性毛片 | 中文字幕视频在线看5 | 少妇一级淫片免费放播放 | 视频一区二区中文字幕 | 亚洲美女在线视频 | 日韩伦理一区二区三区 | 久久精品国产亚洲一区二区三区 | 日本福利视频 | 天天干天天想 | 九九九久久国产免费 | 天堂在线免费视频 | 黄网免费| 成人av资源在线 | 成人自拍av| 亚洲精品v| 青草青草久热精品视频在线观看 | 亚洲视频一区在线 | 欧美久久一区二区三区 | www.av在线| 久久久久久91 | 精品国产区 | 亚洲欧美一区二区三区国产精品 | 中文字幕一区二区三区四区五区 | 日本黄色片免费在线观看 | 一级片网站视频 | 性生生活大片免费看视频 | 色婷婷综合久久久中字幕精品久久 | 免费av一区二区三区 | av一二三四 | 国产成人精品免高潮在线观看 | 美女爽到呻吟久久久久 | 国产农村一级国产农村 | 日韩一区在线播放 | 精品亚洲一区二区三区 | 久久久精彩视频 | 一级黄色影片在线观看 | 欧美一级久久精品 | 国产成人免费观看 | 91在线免费视频 |