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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2741|回復: 15
打印 上一主題 下一主題
收起左側

IAR STM8 C語言中定義的unsigned long int數據類型最大值只能是32768

[復制鏈接]
跳轉到指定樓層
樓主
我想在IAR STM8S  中定義一個4字節變量  存放充值的金額,結果當數據  CZ超過32768的時候就錯誤了!不知道是哪里出問題了~~大神指點下吧~unsigned   long   int   CZ;
.
CZ=CZ+num2;  
.
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:883242 發表于 2022-6-7 21:58 | 只看該作者
要學會查編譯器手冊。
回復

使用道具 舉報

板凳
ID:329625 發表于 2022-6-7 22:00 | 只看該作者
你查一下 long int 是幾位數據,應該是達到最大值 超出范圍
回復

使用道具 舉報

無效樓層,該帖已經被刪除
5#
ID:562798 發表于 2022-6-7 23:42 | 只看該作者
17337161031 發表于 2022-6-7 22:00
你查一下 long int 是幾位數據,應該是達到最大值 超出范圍

我理解的long  int  應該是4個字節的數據!但是實際上這個值只能取到32767以內
回復

使用道具 舉報

6#
ID:883242 發表于 2022-6-7 23:55 | 只看該作者
donny123800 發表于 2022-6-7 23:42
我理解的long  int  應該是4個字節的數據!但是實際上這個值只能取到32767以內

你要學會查閱編譯器手冊的能力。
回復

使用道具 舉報

7#
ID:161164 發表于 2022-6-8 09:28 | 只看該作者
donny123800 發表于 2022-6-7 23:42
我理解的long  int  應該是4個字節的數據!但是實際上這個值只能取到32767以內


回復

使用道具 舉報

8#
ID:562798 發表于 2022-6-8 17:28 | 只看該作者

多謝!我換個類型試試看!
回復

使用道具 舉報

9#
ID:624769 發表于 2022-6-8 18:02 來自觸屏版 | 只看該作者
donny123800 發表于 2022-6-7 23:42
我理解的long  int  應該是4個字節的數據!但是實際上這個值只能取到32767以內

一般情況下,long是long,int是int。
long int 應該是你自創的類型,自創類型不是不可以,但你如果希望達到你的預期效果的話,是不是應該把編譯器先設定好?
回復

使用道具 舉報

10#
ID:562798 發表于 2022-6-8 21:45 | 只看該作者
188610329 發表于 2022-6-8 18:02
一般情況下,long是long,int是int。
long int 應該是你自創的類型,自創類型不是不可以,但你如果希望 ...

long 定義的變量一樣的不能超過32767  只要超過這個范圍一定出錯~
回復

使用道具 舉報

11#
ID:562798 發表于 2022-6-8 21:45 | 只看該作者
17337161031 發表于 2022-6-7 22:00
你查一下 long int 是幾位數據,應該是達到最大值 超出范圍

4字節的數據
回復

使用道具 舉報

12#
ID:562798 發表于 2022-6-8 21:46 | 只看該作者
donny123800 發表于 2022-6-8 21:45
long 定義的變量一樣的不能超過32767  只要超過這個范圍一定出錯~

所以不知道是哪里出問題了!多謝大俠指點哈!
回復

使用道具 舉報

13#
ID:883242 發表于 2022-6-8 22:23 | 只看該作者
donny123800 發表于 2022-6-8 21:46
所以不知道是哪里出問題了!多謝大俠指點哈!

六樓已經貼出編譯器手冊,那就不是long數據長度的問題,應該出在別的地方,多貼一些代碼。
回復

使用道具 舉報

14#
ID:562798 發表于 2022-6-9 08:23 | 只看該作者
Hephaestus 發表于 2022-6-8 22:23
六樓已經貼出編譯器手冊,那就不是long數據長度的問題,應該出在別的地方,多貼一些代碼。

問題就是現在我給變量直接賦值  如果取值在0~32767 這個范圍內就正常    取值32768~65536 之間就錯誤   超出65536就正常  就是不知道是哪里出問題了!本人實在是菜鳥!找不到問題在哪里了!
回復

使用道具 舉報

15#
ID:1033099 發表于 2022-6-9 09:19 | 只看該作者
有符號整形變量int型的,在c語言里面規定是用兩個字節也就是16個二進制位來表示的。最高為用來表示正負,后面還有15位數,于是一共可以表示2的15次方個數字,也就是32768個,但是呢,數字0是用的16個二進制0表示的,所以正數只能到32767了,負數則是到-32768。所以它是因為變量為負數報錯。
回復

使用道具 舉報

16#
ID:1033099 發表于 2022-6-9 09:37 | 只看該作者
int本來不就是16位么? 在很久很久以前,C語言才出現的時候,計算機的字寬是16位,int于是也就是16位. 后來出現了32位機的時候,int才有32位寬.不過在8位和16位的CPU上,int還是16位.這是編譯器的問題,如果編譯器將int認為16位,那么在這個編譯環境中就是16位,如:Keil C和IAR中int都是16位,在IAR FOR STM8中用unsigned long int\unsigned int\unsigned long\long都不行,最多只能到16位了。此外IAR會把用完的局部變量優化掉。最好定義為全局變量然后觀察,不然,有可能被優化掉了,什么也看不到;int型通常就是16位。
回復

使用道具 舉報

17#
ID:562798 發表于 2022-6-9 11:21 | 只看該作者
startxk 發表于 2022-6-9 09:37
int本來不就是16位么? 在很久很久以前,C語言才出現的時候,計算機的字寬是16位,int于是也就是16位. 后來出現 ...

好勒!多謝!按照你這個思路應該是可以解決了!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表