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