1. 程式人生 > >c語言三字母詞(trigraph) && 整型提升

c語言三字母詞(trigraph) && 整型提升

三字母詞(trigraph) && 整型提升

最近看了c的語言標準,因為很喜歡,但是無奈自己英文是個菜鳥.但是所幸看見了一個致力於c11的網站,上面講到了三字母詞,還要整型提升

三字母詞

編譯階段將特定的幾個三字母詞替換為 一個詞這裡是表格
表格

這應該屬於歷史原因,某些鍵盤或者裝置沒有對應字元的那些按鍵

比如

??=define P 3.14
//等價於
#define P 3.14

整形提升

c語言的整形 int以下的整形在進行運算是會提升為int的4位元組,相關資料顯示為cpu裡的ALU單元,在32為以上(不嚴謹)不容易做8位運算,相關資料,需要提升為整形,但是我程式碼測試也發現了這個問題,上程式碼

//環境
gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
centos7  x64
//程式碼
#include<stdio.h>
#define CHARB 0Xb6
#define SHORTB 0xb600
#define INTB 0Xb6000000
int  main(void)
{
  char a = CHARB;
  short b = SHORTB;
  int c = INTB;
  if(a == CHARB){
    printf("a is true\n");
  }else{
    printf("a is false\n"
); } if(b == SHORTB){ printf("b is true \n "); }else{ printf("b is false \n"); } if(c == INTB){ printf("c is true\n"); }else{ printf("c is false \n"); } printf("%d\n" , sizeof(+a)); exit(0); } //output a is false b is false c is true 4

這裡有一個問題c是以編譯器實現為準的,不要看見標準就以為一定會有,使用之前也要自己先進行測試.跨平臺更要小心.

相關推薦

c語言字母(trigraph) && 提升

三字母詞(trigraph) && 整型提升 最近看了c的語言標準,因為很喜歡,但是無奈自己英文是個菜鳥.但是所幸看見了一個致力於c11的網站,上面講到了三字母詞,還要整型提升 三字母詞 編譯階段將特定的幾個三字母詞替換為 一個詞這裡是表格

c語言基礎-變量(

可用 我們 固定 字節數 有符號 borde 輸入 c語言 長整型 一、整型變量 類型 關鍵字 取值範圍 存儲單元字節數(非固定) 輸出 有符號整型 [signed] int -2147483648~2147483647 4 %d 無符號整型 unsign

C語言】給定兩個變數的值,將兩個值的內容進行交換(不同方法)

     給定兩個整型變數的值,將兩個值的內容進行交換,現在我介紹幾種不同的實現方法:法1:在主函式裡實現,這樣操作這兩個值時並未重新開闢空間,直接交換可以達到目的。#include<stdio.h> #include<stdlib.h> int m

c語言 通過指標變數輸出陣列a的10個元素

                通過指標變數輸出整型陣列a的10個元素。 解:程式: #include<stdio.

C語言學習系列(四)C語言基本語法和數據類

.html 二進制 占用 efault html pac 精度 es2017 %d 一、基本語法 C的令牌(Tokens)   C 程序由各種令牌組成,令牌可以是關鍵字、標識符、常量、字符串值,或者是一個符號。 關鍵字(保留字) auto else long swit

C語言種方法調用數組

技術 png 順序 特性 logs 元素 %d img etc 1 #include <stdio.h> 2 /********************************* 3 * 方法1: 第一維的長度可以不指定 * 4 * 但必須指定第二

C語言大寫字母改小寫字母

pre 句子 alt color src while spl amp spa 題目要求: 由鍵盤輸入一個句子,總字符個數從1個至80個均有可能,以回車符表示結束,將其中的大寫字母變成小寫字母,其他類型的字符不變,最後輸出變換後的句子。分析:輸入句子可以使用gets函數,g

VC++和C語言中常見數據類轉換為字符串的方法

char* 北京 相同 字符指針 ascii bst sdn sprint 出現 1。短整型(int) itoa(i,temp,10);///將i轉換為字符串放入temp中,最後一個數字表示十進制 itoa(i,temp,2); ///按二進制方式轉換 2。長整型(long

C語言 大小寫字母轉換

inf pan () .cn com clas www 轉換 .com //凱魯嘎吉 - 博客園 http://www.cnblogs.com/kailugaji/ 方法1: 1 #include<stdio.h> 2 #include<stdli

種方法實現數值交換

int 異或 交換 實現 整型 數值交換 臨時 變量 a+b 臨時變量法: int a = 5; int b = 4; int temp = 0; temp = a; a = b; b = temp; 異或法: int a = 5; int b = 6; a = a^b;

C語言基礎篇-數據類(二)關鍵字

至少 硬件 邏輯結構 內存空間 結構 根據 什麽 操作 自定義 導航:   1. 數據類型   2. 自定義類型   3. 邏輯結構   4. 類型修飾符   5. 雜項 ----->x<------------->x<--------------

C語言 目運算子結合與運算方向問題

百度百科:三目運算子,又稱條件運算子,是計算機語言(c,c++,java等)的重要組成部分。它是唯一有3個運算元的運算子,所以有時又稱為三元運算子。一般來說,三目運算子的結合性是右結合的。 對於條件表示式b ? x : y,先計算條件b,然後進行判斷。如果b的值為true,計算x的值,運算結果為

創客學院9天C語言

①列印字母: int main (int argc,char *argv[]) { int i,j; char ch = 'F'; //printf ("請輸入字元:"); //scanf("%c\n",&ch); for (i=0;i<=ch-

C++學習之浮點數的數次方

點選開啟連結 class Solution { public: double Power(double base, int exponent) { double sum=1.0; if(exponent>0){ for(int i=1;i<

unity中使用C#語言判斷鬥地主出牌牌

首先定義一下要出的的牌的型別 /// <summary> /// 出牌的型別 過1,單張1,對子2,三張3,三帶單4,三帶對5,單順6,雙順7,飛機8,飛機帶單9,飛機帶雙10,四帶兩單11,四帶對12,炸彈13,火箭14 /// </summary> pub

c語言列印字母菱形————用絕對值

列印字母稜形.如鍵盤上輸入F,則螢幕上輸出如下稜形:     A        A B       A B C      A B C D     A B C D E    A B C D E F     A B C D E       A B C D         A B

C語言中實現bool(布林變數)

C語言中,本身沒有bool(布林型變數)。但是我們可以用其他方式來模擬。一、如果簡單的使用char、int、long變數來表示0/1,則太浪費空間了。二、這裡介紹一種巧妙的方式實現bool,高空間利用率。#define true 1 #define false 0 //--

C語言的幾種取方法

C語言有以下幾種取整方法: 1、直接賦值給整數變數。如: int i = 2.5; 或 i = (int) 2.5; 這種方法採用的是捨去小數部分 2、C/C++中的整數除法運算子“/”本身就有取整功能(int / int),但是整數除法對負數的取整結果和使用的C編

C# 判斷輸入的是否是-正則表示式

 /// 驗證使用者輸入的是否是整數         ///         ///         /// 返回bool型別         private bool IsInt(stri

關於c語言位八進位制數越界的探討

1:\ddd;我們知道,\ddd是對用三位八進位制數轉義表示任意字元的形象化描述,但對d的取值限定在0-7之間,那麼我們不禁要問,如果超過了這個範圍會輸出些什麼,隨機數?開始我也是這麼覺得的,後來用v