程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 學點C語言(16):數據類型 - 關於常量的前綴、後綴

學點C語言(16):數據類型 - 關於常量的前綴、後綴

編輯:關於C語言

曾經對float num=3.14f; 這樣的賦值非常疑惑,其實現在也不明白.
既然說明了是float類型,又何必在3.14後面掛個f呢?

書上說:
int num=100; 一個整數常量將默認為int類型(除非常數有後綴或超出了int的范圍)
double num=3.14; 一個浮點數常量將默認為double類型

並要求:
long num=100L;
long long num=100LL;
unsigned long=100UL;
unsigned long long num=100ULL;

float num=3.14f;

這些後綴是大小寫無關的、(U和L是)無順序的; 我反復測試,看不出沒有區別.

我覺得這些東西用於 #define 還說得過去,用於指定類型的變量有必要嗎?
我猜唯一的必要性或許是讓編譯器少轉換一次.

不過知道還是有好處,以免看不懂別人的代碼.

總之,前人應該自有道理,希望誰知道能告訴我.

另外,如果是十六進制或八進制常數,將從int、unsigned、long、unsigned long中自動選擇最小的類型.

其他情況:

#include <stdio.h>
#include <stddef.h>

int main(void)
{
  char c='a';
  char cs[] = "abc";
  wchar_t wc = L'A'; /* 這個 L 也可以省略 */
  wchar_t ws[] = L"ABC"; 
  int n1 = 65535;
  int n2 = 0xFFFF; /* 十六進制  */
  int n3 = 0Xffff; /* 大小寫都行 */
  int n4 = 0177777; /* 八進制   */

  printf("%c,%s,%c,%S\n",c,cs,wc,ws);
  printf("%d,%d,%d,%d\n",n1,n2,n3,n4);

  getchar();
  return 0;
}

返回“學點C語言 - 目錄”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved