看代碼寫結果,資深編程達人教你有符號變量與無符號變量值的轉換

2020-12-17 C語言編程寶典

有符號變量與無符號變量的區別和聯繫如下所示:

#include<stdio.h>

char getChar(int x, int y)

{

char c;

unsigned int a=x;

(a+y>10)?(c=1):(c=2);

return c;

}

int main(void)

{

char c1=getChar(7,4);

char c2=getChar(7,3);

char c3=getChar(7,-7);

char c4=getChar(7,-8);

printf("c1=%d\n",c1);

printf("c2=%d\n",c2);

printf("c3=%d\n",c3);

printf("c4=%d\n",c4);

return 0;

}

首先說明getChar()函數的作用:它有兩個輸入參數,分別是整型的x和y。在函數體內,把參數x的值轉換為無符號整型後再與y相加,其結果與10進行比較,如果大於10,則函數返回1,否則返回2。

在這裡,我們要注意:所有的操作數都自動轉換成無符號類型。因此,這裡由於a是無符號數,y值會首先自動轉換成無符號的整數,然後與a相加,最後再與10進行比較。以下是在main函數中各調用getChar()函數的分析。

我們可以看到,由於無符號整數的特性,getChar()當參數x為7時,如果y等於區間[-7,3]中的任何整數值,getChar()函數都將返回2。當y的值在區間[-7,3]之外時,函數返回-1。

輸出結果如下:

c1 = 1

c2 = 2

c3 = 2

c4 = 1

總之,我們在看表達式時要很小心地注意符號變量與無符號變量之間的轉換,佔用不同字節內存的變量之間的賦值等操作,否則可能會出現我們意想不到的結果。看到這裡,有符號變量與無符號變量值的轉換,你都學會了嗎?

相關焦點

  • Win10 開發入門:C# 程式語言基礎之數據類型與變量
    基本數據類型• 整數類型在C#中共有8種整數類型,分別為sbyte(有符號8位)、byte(無符號8位)、short(有符號16位)、ushort(無符號16位)、int(有符號32位)、uint(無符號32位)、long(有符號64位)、ulong(無符號64位)。
  • Matlab:符號變量、符號函數、泰勒級數
    點擊上方藍字關注 無距書鄉 獲取即時更新今天介紹一個新內容——符號變量及其函數,再展示一下符號函數的應用
  • C/C+編程筆記:const 變量詳解!一文了解具體用法
    2、C++中的const 1、普通局部const變量 對於基本類型,以符號表中的數據進行初始化的普通局部const變量,此時不會分配內存,將其放入符號表中,如果對它取地址,則會開闢一個新的空間,也就是說會創建一個臨時變量,如果通過地址間接進行修改值不會影響到其本身。
  • ARM彙編特殊符號 彙編符號引用
    ENDIF另外還有符號: $如果在串變量前有一個$,則在彙編時編譯器將用該串變量的數值取代該串變量,如:GBLS STR1GBLS STR2STR1 SETS 「pen.」STR2 SETS 「This is a $STR1"編譯後的結果是STR2的值為This is a pen.如果$後是數字變量(與串變量區分),在彙編時編譯器將該數字變量的數值轉換成十六進位的串,然後用該十六進位的串取代$後的數字變量。如果$後是邏輯變量,在彙編時編譯器將該邏輯變量替換成它的取值(T或者F)。
  • 高效的C編程之: 變量類型
    本章將詳細討論,如何在程序中為變量分配合理的數據類型,來提高代碼的執行效率。14.8.1局部變量ARM屬於RISC的體系結構,所有大多數的數據處理都是在32位的寄存器中進行的。基於這個原因,局部變量應儘可能使用32位數據類型int或long。
  • 手把手教你用 SVG 符號和 CSS 變量做出彩色圖標
    如果你想理解整個過程,就繼續閱讀。如果想直接查看代碼,可以點擊 CodePen.設置 SVG 符號圖標內嵌的 SVG 的問題在於它們的冗餘。你肯定不想在每次使用同一個圖標時複製粘貼所有的坐標。這顯得笨拙,可讀性差,難以維護。
  • 用代碼理解數學符號
    對於任何有興趣從事機器學習和數據科學方面的職業或研究的人來說,總有一天他們會超越python庫,跟隨好奇心進入這一切背後的數學世界。你越深入地理解核心數學,你就越有可能靈光一現地創造出一種新方法。對於已經學習數學多年的任何人,可以將這樣的方程式解析為代碼。但是對於許多其他人來說,這看起來像象形文字。事實是,古代數學領袖似乎似乎選擇了最有趣的外觀符號來描述相當直觀的方法。結果是:方程和變量看起來比實際複雜得多。我發現,代碼不僅可以用來編寫程序,還可以用來解釋複雜的數學語言。
  • 換個角度看世界!用代碼了解數學符號
    對於多年來鑽研數學或從事機器數學學習的人來說,將上面這個方程式詳細地解析為含義和代碼並不難。但是對大部分普通人來說,無異於看天書。古代數學家似乎都喜歡用有趣的外觀符號來表述直觀的方法,但卻使方程和變量複雜化了。實際上,代碼不僅可以編寫程序,還可以讓這些複雜的語言再次變得直觀起來。
  • C語言編程習慣心得
    從編程菜鳥一路走來,慢慢對編程習慣有了一個新的認識。因為曾經我寫的代碼的可讀性令自己也感到哭啼皆非,搞得自己暈頭轉向。今天特意來分享一下自己的一些關於編程習慣的心得。很多人以為代碼一敲完,能得到預期的結果,就萬事ok,其實不然。後面的程序調試、維護和升級是一個項目中很重要的一部分,這就要求我們必須規範編程習慣。
  • Python 基本數據類型和變量
    如果你寫代碼過程中,有這樣的疑問,直接寫一下代碼,自己驗證一下是最好的。顯然,去掉單引號後,運行結果標紅了(報錯),證明這是不可以的。主要是因為這不符合 Python 的語法規則,去掉單引號後, Python 解釋器根本沒法看懂你寫的是什麼。
  • IV-工具變量法:第一階段係數符號確定時的小樣本無偏估計
    在此理論中,如果第一階段係數的符號是給定的,那麼可以在滿足縮減式 (Reduced-form) 誤差滿足正態分布時,估計出有限樣本情況下的無偏工具變量估計量。當縮減式的誤差項分布已知,可以在即使弱工具變量 (Weak IV) 的情況下得到漸進無偏估計量。工具變量有兩個關鍵性假設——相關性和外生性。
  • Python語言基本語法元素之變量,變量的含義及命名規則
    上述代碼中的 rate,currency_type,get_str,currency_num 都是一些名字,代表某些東西。在筆者的代碼中,rate 代表匯率,它的值是1.6375,這時1林吉特=1.6375人民幣。
  • C語言全局變量那些事兒
    其次是語法/語義:從作用域上看,帶static關鍵字的全局變量範圍只能限定在文件裡,否則會外聯到整個模塊和項目中;從生存期來看,它是靜態的,貫穿整個程序或模塊運行期間(注意,正是跨單元訪問和持續生存周期這兩個特點使得全局變量往往成為一段受攻擊代碼的突破口,了解這一點十分重要);從空間分配上看,定義且初始化的全局變量在編譯時在數據段(.data
  • Java 變量、表達式和數據類型詳解
    局部變量:變量除了成員變量之外,其他的就是局部變量;局部變量根據定義位置的不同有3種表現形式:方法形參,方法內變量,代碼塊變量。變量作用域: 變量的作用範圍或者可訪問範圍,只有作用域內,變量才能被其他程序代碼訪問。
  • 變量專題之二:double,float和浮點變量底層表示
    Java中,有兩種變量可以儲存小數類型double 和 float當我們需要表示一個浮點數 (小數) 時,大部分情況下創建一個 double(雙精度浮點數) 類型的變量即可。一個double變量佔據 64 bits 的內存空間。
  • 怎麼通過快速理解變量 來深度理解EA和運用EA
    說實話,僅僅去看變量的名字,你還真沒有辦法確認EA的外部參數到底是什麼意思,因為不同的策略開發人員有相同的定義習慣,假如僅僅從變量名去確認變量的用法,那麼很多時候就會出問題。  那麼怎麼去確定變量的運用?最直接的方式就是需要找到變量名在函數中的調用的位置,這個才是真正的理解與確定。  當然,我們這裡講解變量,那就不得不說變量的定義,這裡先引用官方的定義吧。
  • 不要再在JavaScript中用『var』聲明變量了
    我學到在JavaScript中用關鍵詞var來聲明變量,這是一個簡單且有效的方法,但如今我已做出改變。若你還在編寫類似var x = 5的代碼,那你需要停下來。說實話,你不必停止,但應該如此。人們常常將程式語言視作視為一系列金科玉律。但事實上程式語言就像任何一個口頭語言一樣,是不斷變化發展的。
  • DSP編程技巧之24---C/C++與彙編語言的交互之-(2)從C/C++代碼調用...
    例如,在DSP的編程中,我們經常使用的EALLOW和EDIS語句其實就是這種方法的典型例子,只不過為了書寫的簡便,我們在頭文件中進行了簡單的轉換:  #define EALLOW asm(" EALLOW")  #define EDIS asm(" EDIS")  使用這樣的內聯函數調用方法,必須牢記以下五點:  (1) 該方法有可能會破壞代碼的優化效果
  • Python專題 | (三)注釋、變量與輸出
    前兩篇文章已經把編程簡單的知識和大家介紹過了,今天我們正式開始學習python語法。我們在第一篇文章中介紹pycharm的安裝時曾給大家展示過這樣的一段代碼:這段代碼的輸出結果是命令行展示「hello world」這句話,為了之後知識點的講解,Mark把它進行一下改造,我們今天要介紹的幾個知識點都包含其中。注釋,就是對程序的說明。
  • 初學者使用Python的一些基礎知識(了解變量,集合,循環等信息)
    假設您要在變量中存儲值10-看一下:a = 10 #聲明一個變量#Python的動態語義自動將變量視為Int。既然我們知道如何聲明變量並為其分配值,那麼下一步就是探索不同的變量類型。Int,Float,String,和Boolean 是基本數據類型的Python支持。