linux怎么C語言編程,Linux C基礎筆記(2)

 2023-10-15 阅读 35 评论 0

摘要:Linux C基礎筆記(2) **補充申明:Linux C基礎筆記共分為四部分,第一部分是Linux下基本命令,以及vi編輯器的使用還有C中的數據類型,第二部分為運算符、常量變量和輸入輸出。第三部分是控制語句、數組、字符串函數。第四部分為指針、函

Linux C基礎筆記(2)

**補充申明:Linux C基礎筆記共分為四部分,第一部分是Linux下基本命令,以及vi編輯器的使用還有C中的數據類型,第二部分為運算符、常量變量和輸入輸出。第三部分是控制語句、數組、字符串函數。第四部分為指針、函數以及分配內存管理。在寫完這四部分之后我會繼續上傳數據結構、IO、以及網絡編程的學習筆記,大家如果有需要學習Linux下編程的可以關注一下,我會將我所有的學習筆記發布在此供大家一起學習。(在筆記里面會有一些其他博主的總結,如果涉及到實屬抱歉,您可以通過郵箱聯系我,我會及時修改。**1509965601@qq.com)。

【0】運算符

		算術運算符:+ - * / % ++ --

1】關系運算符和邏輯運算符
他兩主要用于判斷,在條件語句當中經常使用

關系運算符>    <    >=    <=   ==    !=邏輯運算符邏輯與:&&, 運算符兩邊都為真才為真 邏輯或:|| ,只要有一個為真就為真邏輯反:!,原來為真則為假,原來為假,則為真

【2】位運算符

linux怎么C語言編程。A = 0011 1100

位邏輯反 ~        ~ 1 = 0, ~0 = 1;位邏輯與 &        0 & 0 = 0,  0 & 1 = 0; 1 & 0 = 0; 1 & 1 = 1; 位邏輯或 |	  0 | 0 = 0; 0 | 1 = 1; 1 | 0 = 1; 1 | 1 = 1;位邏輯異或 ^	  0 ^ 0 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1; 1 ^ 1 = 0;左移 <<		  A << 2 = 1111 0000右移 >>		  A >> 2 = 0000 1111

【3】賦值運算符與賦值復合運算符

==  代表判斷
=	代表賦值賦值運算符為“=”,其運算的一般形式如下:<左值表達式> = <右值表達式>賦值復合運算符其運算的一般形式如下: <變量>  <操作符>=  <表達式>a + b => a += b;a = a / b => a /= b;+=:  C += A 相當于 C = C + A;-=:  C -= A 相當于 C = C - A*=:  C *= A 相當于 C = C * A/=:  C /= A 相當于 C = C / A%=:  C %= A 相當于 C = C % A<<=:  C <<= 2 相當于 C = C << 2>>=:  C >>= 2 相當于 C = C >> 2&=:  C &= 2 相當于 C = C & 2^=:  C ^= 2 相當于 C = C ^ 2|=:  C |= 2 相當于 C = C | 2

【4】逗號運算符(“,”)
從左到右依次計算,最后表達式的值,作為整個表達式的值。
整個表達式的值就是最后一個表達式的值
但是前邊所有的表達式都會被計算。

int a = 10, b = 5, c = 9;這個不是逗號運算符,逗號運算符需要加括號
a = a + b + c, a+b, c;a = ( c = a + b, c++, c = b + c); 
a = 21;

【5】條件運算符"? :" – 三目運算符
條件運算符"? :"是一個三目運算符, 其運算的一般形式是:
<表達式1> ? <表達式2> : <表達式3>

執行過程:先執行表達式1,如果表達式1為真,則執行表達式2,否則執行表達式3等價于if..else...if(表達式1){表達式2}else{表達式3}

【6】sizeof運算符
sizeof運算符運算的一般形式如下:
sizeof(<類型或變量名>)

是一個關鍵字,計算一個變量或者數據類型所占的內存空間的大小,以字節為單位。
注意:它只針對數據類型,而不針對變量!   

C開發,【7】變量與常量
常量是指在程序運行期間其數值不發生變化的數據。

	整型常量C語言的整數可以是十進制數、八進制數和十六進制數。可以有一個后綴U(無符號)或L(長整形)  例如: 215U, 84L浮點常量 浮點常量又稱為實數,一般含有小數部分。在C語言中,實數只有十進制的實數,它又分為單精度實數和雙精度實數,它們的表示方法基本相同。實數有兩種表示方法, 即一般形式和指數形式。float或者double定義的變量所對應的數據科學計數法:3.5e+5 = 350000   3.5e-5 = 0.000035字符常量所謂字符常量是指一個單一字符, 其表示形式是由兩個單引號包括的一個字符。常用轉義字符\\      \ 字符\'	' 字符\"	" 字符\r	回車符 (跳到本行開頭)\n	換行\t	水平制表符\b	退格符		字符串常量所謂字符串常量是指用雙引號括起來的一串字符來表示的數據。a	變量'a'	字符"a"	字符串,每一個字符串都會有一個結束標志,'\0'大小寫字母A和a差32;A=65; a=97;數字0和字符‘0’差48  ‘0’=48;空格為 32;常量定義1.#define預處理器    #define 符號名 替換列表    (替換列表可以是任意字符、數字、字符串、表達式等)#define M(x,y,z) x*y+zmain()  {  int a=1,b=2, c=3;    printf("%d\n", M(a+b,b+c, c+a)); }輸出結果為122.const      const int a = 10; a的值不能被修改  const指針   const int *p = a   指針指向的內容是只讀的  (無法被修改) a不可改變,p可改變        int * const p = a  指針本身是只讀的(無法被修改) p不可改變,a可改變變量:static 靜態變量說明符	靜態局部變量:在函數內使用,退出函數不能使用靜態全局變量:只能在定義變量文件內使用指針函數中延長生命周期修飾函數,extern 全局變量聲明 	可以在其他文件使用該變量,

【8】格式輸入輸出函數
printf/scanf

#include <stdio.h>
int printf(const char *format, ...(arg));(文件末尾詳細解讀了各種輸出格式)
功能:按照一定的格式將數據輸出到終端
參數:format:格式控制串%d 十進制整數%u 無符號的十進制整數%o 八進制整數%x 十六進制整數%c 字符數據%s 字符串%f 浮點類型%% 百分號本身%e(%E) 浮點數指數輸出[e-(E-)記數法]%g(%G) 浮點數不顯無意義的零"0"附加格式說明符m	輸出數據域寬,數據長度<m,左補空格;否則按實際輸出.n	對實數,指定小數點后位數(四舍五入)-	輸出數據在域內左對齊(缺省右對齊)+	指定在有符號數的正數前顯示正號(+)0	輸出數值時指定左面不使用的空位置自動填0#	在八進制和十六進制數前顯示前導0,0xl	long類型輸出 %lddouble類型輸出 %lfarg:可變參
返回值:成功輸出的個數#include <stdio.h>
int scanf(const char *format, ...(arg));
功能:按照格式從終端輸入數據
參數:format:格式控制串%d 十進制整數%c 字符數據%s 字符串%f 浮點類型arg:可變參如果要將輸入的數據保存在arg變量里面,需要傳arg的地址
返回值:成功輸入的個數垃圾字符的回收:在輸入多個字符的時候,往往會產出空格以及回車這個垃圾字符,所以需要處理scanf("%c%c%c", &a, &b, &c);方法1:使用空格隔開	scanf("%c %c %c", &a, &b, &c);方法2:使用%*c隔開,但是那次只能回收一個	scanf("%c%*c%c%*c%c", &a, &b, &c);方法3:使用getchar來回收垃圾字符	scanf("%c", &a);getchar();scanf("%c", &b);getchar();scanf("%c", &c);getchar();輸入字符串時,注意不能超過其規定的字符串的字節數的范圍如果想輸入一個帶空格的字符串,使用%[^\n]getchar() 讀取一個字符
putchar() 輸出一個字符
gets()	  讀取一個字符串
puts()  輸出一個字符串strcpy(s1, s2); 復制字符串 s2 到字符串 s1。strcat(s1, s2);連接字符串 s2 到字符串 s1 的末尾。strlen(s1); 返回字符串 s1 的長度。strcmp(s1, s2);如果 s1 s2 是相同的,則返回 0;如果 s1<s2 則返回小于 0;如果 s1>s2 則返回大于 0。

【附錄】printf 輸出格式(轉載CSDN某博客,具體是哪位大神的我也記不清了,當時逛博客的時候發現的,如有任何問題可以給我發郵箱,我會隨時回復)
---------------------------------------
格式字符
格式字符用以指定輸出項的數據類型和輸出格式。

①d格式:用來輸出十進制整數。有以下幾種用法:
%d:按整型數據的實際長度輸出。
%md:m為指定的輸出字段的寬度。如果數據的位數小于m,則左端補以空格,若大于m,則按實際位數輸出。
%ld:輸出長整型數據。②o格式:以無符號八進制形式輸出整數。對長整型可以用"%lo"格式輸出。同樣也可以指定字段寬度用“%mo”格式輸出。
例:
main()
{ int a = -1;printf("%d, %o", a, a);
}
運行結果:-1,177777
程序解析:-1在內存單元中(以補碼形式存放)為(1111111111111111)2,轉換為八進制數為(177777)8。③x格式:以無符號十六進制形式輸出整數。對長整型可以用"%lx"格式輸出。同樣也可以指定字段寬度用"%mx"格式	輸出。④u格式:以無符號十進制形式輸出整數。對長整型可以用"%lu"格式輸出。同樣也可以指定字段寬度用“%mu”格式輸出。⑤c格式:輸出一個字符。⑥s格式:用來輸出一個串。有幾中用法%s:例如:printf("%s", "CHINA")輸出"CHINA"字符串(不包括雙引號)。%ms:輸出的字符串占m列,如字符串本身長度大于m,則突破獲m的限制,將字符串全部輸出。若串長小于m	,則左補空格。%-ms:如果串長小于m,則在m列范圍內,字符串向左靠,右補空格。%m.ns:輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側,左補空格。%-m.ns:其中m、n含義同上,n個字符輸出在m列范圍的左側,右補空格。如果n>m,則自動取n值,即保證n	個字符正常輸出。⑦f格式:用來輸出實數(包括單、雙精度),以小數形式輸出。有以下幾種用法:%f:不指定寬度,整數部分全部輸出并輸出6位小數。%m.nf:輸出共占m列,其中有n位小數,如數值寬度小于m左端補空格。 %-m.nf:輸出共占n列,其中有n位小數,如數值寬度小于m右端補空格。⑧e格式:以指數形式輸出實數。可用以下形式:%e:數字部分(又稱尾數)輸出6位小數,指數部分占5位或4位。%m.ne和%-m.ne:m、n和”-”字符含義與前相同。此處n指數據的數字部分的小數位數,m表示整個輸出數	據所占的寬度。⑨g格式:自動選f格式或e格式中較短的一種輸出,且不輸出無意義的零。

---------------------------------------
關于printf函數的進一步說明:
如果想輸出字符"%",則應該在“格式控制”字符串中用連續兩個%表示,如:
printf("%f%%", 1.0/3);
輸出0.333333%。

---------------------------------------
對于單精度數,使用%f格式符輸出時,僅前7位是有效數字,小數6位.
對于雙精度數,使用%lf格式符輸出時,前16位是有效數字,小數6位.

由高手指點
對于m.n的格式還可以用如下方法表示(例)
char ch[20];
printf("%*.s\n",m,n,ch);
前邊的
定義的是總的寬度,后邊的定義的是輸出的個數。分別對應外面的參數m和n 。我想這種方法的好處是可以在語句之外對參數m和n賦值,從而控制輸出格式。

UNIX/LINUX?(驗證成功)
今天()又看到一種輸出格式 %n 可以將所輸出字符串的長度值賦紿一個變量, 見下例:

int slen;

printf(“hello world%n”, &slen);

執行后變量被賦值為11

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/137284.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息