學點C語言(16):資料類型

來源:互聯網
上載者:User

曾經對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語言 - 目錄”

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.