程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言——第二章

C語言——第二章

編輯:關於C語言

上一篇:http://www.BkJia.com/kf/201202/121049.html


\

一.
在內存中存儲定點數時,一般以其最高位(最左邊一位)表示數的符號,0表示正,1表示負。數值是以補碼形式存放的。一個正數的補碼就是該數的二進制數。一個負數的補碼我們通過下面的方法求得:
(1)先取該數的絕對值
(2)然後以二進制數的形式存放
(3)再對其取反
(4)然後加1
所有負數的二進制補碼的最高位必然為1.
顯然,無符號的正數的最大值約為有符號的正數的最大值的兩倍再加1(因為補碼有正0和負0)。在C語言中,實數(浮點型)都是有符號的,不可以使用無符號修飾符。

二.
常用數據類型的長度:(1B = 8bit)
char:1B
short:2B
int:4B
long:4B
float:4B
double:8B
long long:8B

三.
字符類型的數據在內存中是以相對應的ASCII碼存放。

四.
打印人民幣符號printf("Y\b=\n");控制代碼"\b"使打印頭退回一格,回來打印好的Y位置再打印字符“=”,兩個字符重疊形成人民幣符號。當然,這一輸出只能在打印機上實現,而不能在顯示器上實現。因為顯示器沒有重疊顯示功能。

五.
對一格變量進行顯示轉換後,得到另外一格類型的數據,但原變量的類型不變。

六.
Printf()函數一般形式如下:
int printf(格式控制字符串,輸出表達式1,輸出表達式2,...);
格式控制字符串由兩部分組成:格式說明字段和普通字符。普通字符(包括轉義符序列)將被簡單的復制並顯示。一個格式說明字段將引起一個輸出參數項的轉換與顯示,它是由"%"引出的格式說明字段。格式說明字段與後面的輸出表達式參數要對應一致。
%     前綴修飾          域寬        精度            長度修正符          格式碼
       -,0,+,空格,#  十進制整數   十進制整數    
需要指出的是:輸出數據的實際精度並不主要取決於格式說明字段中的域寬和精度,也不取決於輸入數據的精度,而主要取決於數據在機器內的存儲精度。例如,一般C語言系統對float數據只能提供6為有效數字。格式說明字段中所指定的域寬再大,精度再長,得到的多余位數上的數字是毫無意義的。所以,增加域寬與精度並不能提高輸出數據的實際精度。

七.
當年困擾自己的一個問題
#include<stdio.h>
int mian(void)
{
Int a = 1, b = 2;
Printf("x = %d, y = %d\n", ++a + b, ++b + a);
Return 0;
}
程序執行結果為x = 5, y = 4
原因在於printf()函數中輸出表達式的運算順序是由右向左的。但是應注意此規則會因編譯程序的不同而不同。所以,我們盡量確保在輸出時,輸出表達式不能相互影響,要確實是一個固定的值。

八.
在輸入數據時,實際上並非輸入一個數據項就送給一個變量,而是在輸入一行字符並按enter鍵之後才被輸入,這一行字符先存放在一個緩沖區內,然後按照scanf()格式說明的要求從緩沖區中讀取數據,如果輸入數據多於一個scanf()鎖要求的個數,那麼余下的數據將作為下一個scanf()接著使用。為了保持輸入的一致性,可以在格式串中的不同類型轉變處添加顯式的空白。scanf("%d %c %c %d %lf", &num, &name, &sex, &age, &salary);
當定義中有字段寬度時,scanf()將在緩沖區中的輸入流上,按照寬度有間隔的挑取字符。
scanf("%3c%3c", &c, &d); 如果我們輸入為abcd,那麼c=a, d=d;

九.
在執行getchar()時,雖然是每次讀入一個字符,就回顯一個字符,但並非從鍵盤輸入一個字符,該字符就立即送給一個字符變量,而是等到按Enter後,才將一行字符輸入緩沖區,然後getchar()函數從緩沖區中取一個字符送給一個字符型變量。這種情況成為行緩沖。


摘自 飄過的小牛

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