多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > C語言運(yùn)算符與表達(dá)式

C語言運(yùn)算符與表達(dá)式

來源:程序員人生   發(fā)布時(shí)間:2016-06-24 08:41:51 閱讀次數(shù):3010次

1 概論

計(jì)算機(jī)內(nèi)存中的數(shù)據(jù)可以通過變量,常量來表示和存儲(chǔ),那末這些數(shù)據(jù)如何運(yùn)算?
C語言中提供了大量(34種)的運(yùn)算符可以用來完成數(shù)據(jù)的算術(shù),賦值,邏輯,關(guān)系,條件判斷和自增自減運(yùn)算和基于2進(jìn)制的位運(yùn)算,同時(shí)提供了跨平臺(tái)的用于數(shù)據(jù)格式化輸入輸出的函數(shù)printf()和scanf(),而實(shí)際上計(jì)算機(jī)需要去完成的任務(wù)正是讀取輸入的數(shù)據(jù),根據(jù)業(yè)務(wù)邏輯進(jìn)行計(jì)算以后將結(jié)果輸出。

在學(xué)習(xí)為了完成數(shù)據(jù)的復(fù)雜計(jì)算而生的那些運(yùn)算符之前,需要先明白幾個(gè)概念:

操作數(shù):參與計(jì)算的數(shù)據(jù),可以是之前學(xué)過的整數(shù),浮點(diǎn)數(shù)和字符和以后學(xué)的。
運(yùn)算符:也就是履行某項(xiàng)計(jì)算的符號(hào),例如+ - * / % >等等
表達(dá)式:操作數(shù)和運(yùn)算符的組合,例如 x+y;

而運(yùn)算符通常是有優(yōu)先級(jí)和結(jié)合性的特性:
優(yōu)先級(jí):以算術(shù)運(yùn)算符為例子,通常是先乘除后加減,可使用()提高優(yōu)先級(jí)
結(jié)合性:繼續(xù)以算術(shù)運(yùn)算符為例子,當(dāng)優(yōu)先級(jí)相同時(shí)(表達(dá)式中只有同級(jí)別的運(yùn)算符),通常是從左到右開始履行的。

但是實(shí)際生產(chǎn)和生活中通常都是各種運(yùn)算和后面學(xué)習(xí)的流程控制語句聯(lián)合嵌套使用的,是現(xiàn)實(shí)生活中的業(yè)務(wù)復(fù)雜度決定的。

2 算術(shù)運(yùn)算符

算術(shù)運(yùn)算符主要是用來完成數(shù)學(xué)運(yùn)算的,C語言支持?jǐn)?shù)學(xué)上的加減乘除4則混合運(yùn)算,同時(shí)還有取模運(yùn)算(%),也就是求被除數(shù)/除數(shù)=商數(shù)…余數(shù),需要指出的是只有整數(shù)才能求模。

下面程序案例演示了算術(shù)運(yùn)算符使用進(jìn)程中需要注意的事項(xiàng):
1 整數(shù)和整數(shù)運(yùn)算,結(jié)果是整數(shù),特別是在使用除法時(shí)需要注意會(huì)舍去小數(shù)部份
2 當(dāng)有多種數(shù)據(jù)類型(int double char)參與運(yùn)算時(shí),運(yùn)算結(jié)果的數(shù)據(jù)類型是參與運(yùn)算的最大的數(shù)據(jù)類型,這樣保持?jǐn)?shù)據(jù)運(yùn)算的準(zhǔn)確性。

#include <stdio.h> /* 算術(shù)運(yùn)算符 + - * - @author Tony 18601767221@163.com @since 20160526 10:13 */ void alg_operator() { printf("%d\n", 1 + 3); printf("%d\n", -3); //加減運(yùn)算符有時(shí)候會(huì)被當(dāng)作正負(fù)數(shù) printf("%d\n", 5 / 2.0);//運(yùn)算的結(jié)果是2.5 但是printf在打印輸出時(shí)不會(huì)做強(qiáng)迫類型轉(zhuǎn)換,因此這里解析毛病,結(jié)果為0 printf("%d\n", (int)(3.5 * 2));// 當(dāng)參與運(yùn)算的類型不1致時(shí),如果想要指定類型的結(jié)果,可以通過強(qiáng)迫類型轉(zhuǎn)換來實(shí)現(xiàn) printf("3/2=%d", 3 / 2); //兩個(gè)整數(shù)相除 小數(shù)部份被舍去 }

求模運(yùn)算的結(jié)果與被除數(shù)相同,如果被除數(shù)是正數(shù),那末取余的結(jié)果也是正數(shù),反之同樣成立。

/* 算術(shù)運(yùn)算符 求模的結(jié)果和被除數(shù)相干 @author Tony 18601767221@163.com @since 20160526 10:13 */ void modulo_operator() { //整數(shù)能做求模運(yùn)算,浮點(diǎn)數(shù)不能 //int result = 5.0 % 3; 編譯毛病 //求模運(yùn)算的結(jié)果與被除數(shù)相同 int result = 5 % 3; //1...2 結(jié)果就是2 printf("5模3=%d\n", result); result = -5 % 3;// ⑴...⑵ 結(jié)果就是⑵ printf("⑸模3=%d\n", result); result = 5 % -3;// ⑴...2 結(jié)果就是2 printf("5模⑶=%d\n", result); result = -5 % -3;// 1...⑵ 結(jié)果就是⑵ printf("⑸ 模⑶=%d\n", result); }

取模運(yùn)算符可使用乘除法實(shí)現(xiàn):

/* 使用乘除法實(shí)現(xiàn)取模運(yùn)算 @author Tony 18601767221@163.com @since 20160528 20:28 */ void delivery() { int result = 5 % 3; printf("取模運(yùn)算結(jié)果>>>result=%d\n",result); result = 5 - (5 / 3) * 3; //先取整相乘再相減 printf("乘除法運(yùn)算結(jié)果>>>result=%d\n", result); }

取模運(yùn)算符的使用處景:整數(shù)反轉(zhuǎn),例如12345反轉(zhuǎn)成54321

/* 使用求模運(yùn)算符實(shí)現(xiàn)整數(shù)反轉(zhuǎn) @author Tony 18601767221@163.com @since 20160526 10:36 */ void modulo_reversal_sample() { int num = 0; printf("請(qǐng)輸入1個(gè)反轉(zhuǎn)的5位整數(shù)\n"); scanf("%d", &num); //讀取鍵盤上輸入的整數(shù) int unit = num % 10; int decade = num / 10 % 10; int hundred = num / 100 % 100 % 10; int thousand = num / 1000 % 10; int tenThousand = num / 10000; int reseveal = tenThousand + thousand * 10 + hundred * 100 + decade * 1000 + unit * 10000; printf("反轉(zhuǎn)之前的數(shù)字%d\n反轉(zhuǎn)以后的數(shù)字%d\n", num, reseveal); }

3 賦值運(yùn)算符

在學(xué)習(xí)變量時(shí)屢次使用到賦值運(yùn)算符”=”,需要區(qū)分的是C語言中的相等性判斷是使用”==”兩個(gè)等號(hào)來實(shí)現(xiàn)的。

賦值運(yùn)算符的作用就是將右側(cè)的表達(dá)式或常量值賦值給左側(cè)的變量,賦值之前會(huì)進(jìn)行類型轉(zhuǎn)換(將右側(cè)的值轉(zhuǎn)換成左側(cè)的變量類型)。

/* 賦值運(yùn)算符 @author Tony 18601767221@163.com @since 20160526 10:36 */ void assignment_operator() { // C語言中的=表示賦值運(yùn)算符 int value = 12; //將12賦值給變量value printf("value=%d\n", value); //賦值運(yùn)算符會(huì)自動(dòng)將右側(cè)的表達(dá)式計(jì)算的結(jié)果或是常量自動(dòng)轉(zhuǎn)換成左側(cè)的變量類型 double db = 12 + 12; printf("db=%.2f\n", db); int one, two, three; one = two = three = value; //當(dāng)同時(shí)有多個(gè)賦值運(yùn)算時(shí),從右往左履行賦值運(yùn)算 //算數(shù)運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符優(yōu)先級(jí) //復(fù)雜賦值運(yùn)算符 int num = 10; num +=-2; num -= 4; num *= 6; num /= 8; num %= 10; // //賦值運(yùn)算符是從右向左開始履行 int result = 5; result += result -= result *= result /= result; // result+=result-=result*=result=result/result printf("result=%d\n",result); }

復(fù)雜運(yùn)算符的使用處景:1⑴00之間的整數(shù)累加求和

/* //復(fù)雜賦值運(yùn)算符的利用場(chǎng)景, 1⑴00之間的整數(shù)累加求和 @author Tony 18601767221@163.com @since 20160518 09:34 */ void assignement_sample() { int i = 1; int sum = 0; while (i <=100) { sum += i;//作用同等于sum =sum +i; i += 1; } printf("1到100之間的整數(shù)和為%d\n", sum); }

復(fù)雜賦值運(yùn)算符的使用處景:計(jì)算1⑴00之間的偶數(shù)和

/* 偶數(shù)求和 @author Tony 18601767221@163.com @since 20160518 09:36 */ void even_sum() { int i = 0; int sum = 0; while (i<=100) { sum += i; i += 2; } printf("1到100之間的偶數(shù)和為%d\n", sum); }

4 自增自減運(yùn)算符

自增自減運(yùn)算符主要的用處是讓變量自增1或自減1,不能作用于常量或表達(dá)式。自增(++)可之前置或后置,前置變量表示先自增1,再援用,而后置1表示先援用,后自增1。

當(dāng)自增自減運(yùn)算符和算術(shù)運(yùn)算符履行混合運(yùn)算時(shí),自增自減運(yùn)算符高于算術(shù)運(yùn)算的優(yōu)先級(jí)。

#include <stdio.h> /* 自增自減運(yùn)算符 @author Tony 18601767221@163.com @since 20160526 11:24 */ void auto_increment() { //只有變量能夠自增,常量與表達(dá)式不可以自增?。?! int num = 10; num++; //讓num自增1 自增運(yùn)算符++可以放到整數(shù)變量num前面或后面,如果是單唯一行語句,效果是1樣的 printf("num=%d\n", num); printf("前置++和后置++運(yùn)算的區(qū)分\n"); printf("后置++運(yùn)算\n"); int age = 28; printf("age=%d\n", age++);//先援用打印 printf("age=%d\n", age);//再自增 printf("前置++運(yùn)算\n"); int year = 2016; printf("age=%d\n", ++year);//先自增 printf("age=%d\n", year);//再援用打印 //自增運(yùn)算符優(yōu)先級(jí)高于算數(shù)運(yùn)算符優(yōu)先級(jí) int val = 10; printf("val=%d\n", ++val + 3);//val先自增1 再加3 val = 3; printf("val=%d\n", -val++);//val先自增加1再變成負(fù)3 int number = 10; int data = 5; printf("%d", ++number*data);// 55 int one = 5; int two = 10; int sum = one++ + two; printf("sum =%d\n",sum); sum = ++one + two; printf("sum =%d\n", sum); }

自增運(yùn)算符經(jīng)常使用在循環(huán)中改變循環(huán)變量的值

#include <stdlib.h> /* 自增自減的典型使用處景 @author Tony 18601767221@163.com @since 20160528 08:59 */ void auto_increment_sample() { // int count = 0; while (count++<5) { system("start notepad"); //異步調(diào)用記事本 } while (count-->0) { system("calc"); } }

使用自增運(yùn)算符實(shí)現(xiàn)基于命令行的變色龍

#include <Windows.h> #include <stdlib.h> #include <stdio.h> /* 實(shí)現(xiàn)命令行窗口的變色龍 @author Tony 18601767221@163.com @since 20160528 09:00 */ void changeColor() { char command[32]; //聲明字符數(shù)組保存輸入的命令 int i = 0; while (i<0xf) { sprintf(command, "color %x%x", i, 15 - i);// 使用sprintf函數(shù)實(shí)現(xiàn)給字符串賦值 system(command); Sleep(1000); //1秒鐘改變1次窗口的色彩 i++; } }

使用自減運(yùn)算符實(shí)現(xiàn)基于命令行的標(biāo)題時(shí)間變更 倒計(jì)時(shí)的秒表

#include <stdio.h> #include <stdlib.h> #include <Windows.h> /* 使用自增自減實(shí)現(xiàn)秒表的倒計(jì)時(shí) @author Tony 18601767221@163.com @since 20160528 09:16 */ void timer() { int second = 0; printf("請(qǐng)輸入你要開始倒計(jì)時(shí)的秒鐘數(shù)字\n"); scanf("%d",&second); char command[32]; //聲明1個(gè)字符數(shù)組保存履行的倒計(jì)時(shí)(以命令行窗口的標(biāo)題時(shí)間變化) while (second-->0) { sprintf(command,"title %d",second); system(command); Sleep(1000); //利用Windows的Sleep函數(shù)實(shí)現(xiàn)暫停1秒鐘 } }

5 邏輯運(yùn)算符

邏輯運(yùn)算符用于計(jì)算常量,變量或表達(dá)式的邏輯值,做多個(gè)條件判斷。主要有3個(gè)邏輯運(yùn)算符:
邏輯與(&&):當(dāng)多個(gè)表達(dá)式計(jì)算結(jié)果為非0時(shí),邏輯與的計(jì)算結(jié)果為1,否則如果有1個(gè)表達(dá)式結(jié)果為0(邏輯與的計(jì)算結(jié)果為0),那末邏輯與將不會(huì)再履行剩余的表達(dá)式,此時(shí)短路產(chǎn)生!(邏輯與可以形象的理解成白富美找男朋友,要又高又富又帥,多個(gè)條件都要滿足)

邏輯或(||):當(dāng)多個(gè)表達(dá)式計(jì)算結(jié)果中有1個(gè)為非0時(shí),邏輯或的計(jì)算結(jié)果為1,此時(shí)邏輯或?qū)⒉辉俾男惺S嗟谋磉_(dá)式,短路產(chǎn)生,否則如果所有表達(dá)式結(jié)果都為0,結(jié)果為0。(邏輯或可以形象的理解為IT男找女朋友,只要窈窕淑女1個(gè)條件便可)

邏輯非(!):對(duì)表達(dá)式運(yùn)算的結(jié)果取反,即如果表達(dá)式運(yùn)算結(jié)果為0,邏輯非就是非0,反之同樣成立。

使用關(guān)系和邏輯運(yùn)算符實(shí)現(xiàn)大小寫字母的相互轉(zhuǎn)換

/* 使用關(guān)系運(yùn)算符結(jié)合邏輯運(yùn)算符實(shí)現(xiàn)大小寫字母轉(zhuǎn)換 @author Tony 18601767221@163.com @since 20160530 20:59 */ void releation_sample() { printf("請(qǐng)輸入1個(gè)字母\n"); char input = getchar(); //獲得輸入的字母 input >= 'a'&&input <= 'z' ? putchar(input -= 0x20) : input >= 'A'&&input <= 'Z' ? putchar(input += 0x20) : putchar(input); printf("\n"); }

6 關(guān)系運(yùn)算符

C語言的關(guān)系運(yùn)算符和數(shù)學(xué)上的大于(>),小于(<),大于等于(>=),小于等于(<=)和不等于(!=)相對(duì)應(yīng),只是用在C語言的表達(dá)式中產(chǎn)生的結(jié)果是0(假)或1(真)。

/* 關(guān)系運(yùn)算符的運(yùn)算結(jié)果 @author Tony 18601767221@163.com @since 20160529 08:40 */ void releation_operator() { int x = 10; int y = 20; printf("%d\n",x>y); //表達(dá)式不成立 結(jié)果為0 printf("%d\n",x<y);//表達(dá)式成立結(jié)果為1 }

邏輯運(yùn)算符使用的那些坑…

/* 邏輯運(yùn)算 @author Tony 18601767221@163.com @since 20160528 12:56 */ void logic_operator() { //&& 多個(gè)表達(dá)式運(yùn)算結(jié)果為非0 邏輯與為1,否則為0 int age = 28; printf("邏輯與短路特性:%d\n",3>5&&++age); //當(dāng)明確計(jì)算結(jié)果時(shí)(邏輯與有1個(gè)計(jì)算結(jié)果為0)不再履行剩余的表達(dá)式(這里的++age不會(huì)再履行) printf("age=%d\n",age);//因此age變量的值和聲明初始化的結(jié)果1樣 //|| 多個(gè)表達(dá)式運(yùn)算結(jié)果中有1個(gè)為非0 邏輯或?yàn)?,否則(都是0的結(jié)果)為0 printf("邏輯或短路特性:%d\n",3<5||++age);//這里也不會(huì)履行++age,這個(gè)就是邏輯或的短路特性 printf("age=%d\n", age);//因此age變量的值和聲明初始化的結(jié)果1樣 //! 對(duì)表達(dá)式運(yùn)算的結(jié)果取反,1變成0 0變成1 printf("3<5取反的運(yùn)算結(jié)果為:%d\n",!3<5); //對(duì)結(jié)果取反 }

使用關(guān)系和邏輯運(yùn)算符實(shí)現(xiàn)商場(chǎng)的購物打折程序

/* 商品打折系統(tǒng) @author Tony 18601767221@163.com @since 20160530 21:11 */ void discount() { double unitPrice = 128.8;//商品單價(jià) int number = 10;//購買數(shù)量 double totalPrice = unitPrice*number; //計(jì)算總價(jià) double nineDiscountPrice = totalPrice*0.9; //9折 double eightDiscountPrice = totalPrice*0.8;//8折 //不同的商品價(jià)格實(shí)現(xiàn)不同的折扣 totalPrice >= 1000 ? totalPrice=nineDiscountPrice: totalPrice >= 1500 ? totalPrice=eightDiscountPrice : nineDiscountPrice; printf("終究商品的交易價(jià)格為%.2f\n",totalPrice); }

73元運(yùn)算符

3元運(yùn)算符的1般情勢(shì)是表達(dá)式1?表達(dá)式2:表達(dá)式3,當(dāng)表達(dá)式1的結(jié)果為非0時(shí),履行表達(dá)式2,否則就履行表達(dá)式3。3目運(yùn)算符可以實(shí)現(xiàn)if/else語句的功能。

#include <stdio.h> #include <stdlib.h> /* 3目運(yùn)算符使用案例 @author Tony 18601767221@163.com @since 20160526 13:24 */ void ternary_operator() { 0 ? system("calc") : system("tasklist"),system("explorer"); //這里會(huì)履行調(diào)用notepad -1 ? system("system tasklist"),system("ipconfig"):system("calc");//履行tasklist和calc int num = rand(); //獲得1個(gè)隨機(jī)值 printf("產(chǎn)生的隨機(jī)值為%d\n",num); num > 80 ? printf("你贏了") : printf("你輸了"); int one = 100; int two = 200; int max = one > two ? one : two; printf("兩個(gè)整數(shù)中的最大值為%d\n", max); }

結(jié)合關(guān)系運(yùn)算符和以時(shí)間為隨機(jī)數(shù)的種子數(shù)實(shí)現(xiàn)賭博機(jī)

#include <stdio.h> #include <stdlib.h> #include <time.h> //引入時(shí)間頭文件 #include <Windows.h> /* 賭博機(jī)的原理 @author Tony 18601767221@163.com @since 20160529 08:15 */ void winning_rate(){ time_t ts; //聲明1個(gè)時(shí)間類型的變量 int num=0; srand((unsigned int)(time)(&ts)); //定義隨機(jī)數(shù)種子,每次產(chǎn)生的隨機(jī)數(shù)都不1樣 num = rand() % 100;//產(chǎn)生0⑴00之間的整數(shù) num > 80 ? printf("你贏了"),system("echo 取得80W元大獎(jiǎng)") : printf("你輸了"),system("echo 沒有中獎(jiǎng)"); }

使用3目運(yùn)算符實(shí)現(xiàn)求4個(gè)整數(shù)中的最大值

#include <stdio.h> /* 獲得最大值 @author Tony 18601767221@163.com @since 20160529 08:20 */ void get_max_value(){ int max =0; int one = 66; int two = 77; int three = 88; int four = 99; max = one > two ? one : two; max = max > three ? max : three; max = max > four ? max : four; printf("4個(gè)整數(shù)中最大的值為%d\n", max); }

8位運(yùn)算符

9 C語言輸入輸出函數(shù)

9.1 輸出函數(shù)printf()

從第1個(gè)C語言程序中,就使用了跨平臺(tái)的庫函數(shù)printf實(shí)現(xiàn)將1段文字輸出到控制臺(tái),而實(shí)際上,printf()不但可以將數(shù)據(jù)依照指定的格式輸出到控制臺(tái),還可以是網(wǎng)頁或是指定的文件中。

使用printf函數(shù)將數(shù)據(jù)依照指定的格式輸出到網(wǎng)頁的使用案例,目前我們公司的IT系統(tǒng)還有用C語言寫的堡壘機(jī)程序(cgi)。

/* 使用printf輸出數(shù)據(jù)到網(wǎng)頁 @author Tony 18601767221@163.com @since 20160530 09:04 */ void printf_html() { printf("Content-type:text/html \n\n");//聲明HTML語言 printf("Hello World In HTML");//將生成的exe程序改成cgi就能夠部署在Web服務(wù)器例如Apache中運(yùn)行了 }

printf()函數(shù)的強(qiáng)大的地方在于格式化顯示整數(shù),浮點(diǎn)數(shù),字符和字符串。我們可使用這個(gè)函數(shù)來調(diào)試程序或獲得方法的返回值等等。
printf只會(huì)依照傳遞的參數(shù)類型解析數(shù)據(jù),不會(huì)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,傳入的參數(shù)類型和個(gè)數(shù)和輸出的類型和個(gè)數(shù)保持1致,不然程序運(yùn)行時(shí)會(huì)出異常

使用printf打印字符串,整數(shù)和字符的案例

#include <stdio.h> /* 使用printf格式化輸出數(shù)據(jù) @author Tony 18601767221@163.com @since 20160530 09:14 */ void printf_sample() { printf("Hello World \n");//輸出字符串常量,默許是輸出到控制臺(tái) //printf顯示不同數(shù)據(jù)類型的數(shù)據(jù) printf("我的名字叫%s,我的年齡是%d我的榮幸字符是%c\n","Tony",28,'C'); }

printf在打印輸出整數(shù)時(shí),不但可以依照3種不同的進(jìn)制類型(8進(jìn)制,10進(jìn)制和106進(jìn)制),同時(shí)還可以依照有符號(hào)和無符號(hào)兩種方式打印整數(shù)。
和控制輸出字符的寬度等等:

#include <stdio.h> /* 輸出指定格式的整數(shù)數(shù)據(jù) 如果要在網(wǎng)頁下顯示數(shù)據(jù),還需要匹配不同的格式 @author Tony 18601767221@163.com @since 20160530 09:20 */ void printf_format_int() { const int num = 10; printf("%d",num);//默許的格式是有多寬 填充多寬 printf("%d\t%ld",num,num);//32位以上的系統(tǒng)%d和%ld是等效的 inth和long是等效的 printf("%10d\n",num);//寬度為10,數(shù)據(jù)顯示默許是右側(cè)對(duì)齊 printf("%010d\n",num);//寬度為10,如果不足則用0來補(bǔ)充 printf("%⑴0d\n",num);//寬度為10,默許是依照右側(cè)對(duì)齊, "-"表示左側(cè)對(duì)齊 printf("%3d\n",12345); //m整數(shù),大于實(shí)際寬度,填充0或空格,否則無效 } /* 輸出指定格式的整數(shù)(有沒有符號(hào)類型和3種進(jìn)制類型的)數(shù)據(jù) 如果要在網(wǎng)頁下顯示數(shù)據(jù),還需要匹配不同的格式 @author Tony 18601767221@163.com @since 20160530 10:11 */ void printf_format_int_data_type() { const int num = 10; printf("%d\n", num);//有符號(hào)10進(jìn)制 printf("%i\n",num); printf("%u\n",num); //無符號(hào)10進(jìn)制 printf("%o\n",num);//無符號(hào)8進(jìn)制 printf("%x\n",num); //無符號(hào)106進(jìn)制 } /* @author Tony 18601767221@163.com @since 20160530 21:53 */ void printf_format_int_unsinged() { unsigned short int uvalue = 65535; short int num = 123; printf("uvalue =%hu\tnum=%hd",uvalue,num); }

printf在打印輸出浮點(diǎn)數(shù)時(shí),整數(shù)全部輸出,默許保持小數(shù)點(diǎn)后6位,可以依照小數(shù)和指數(shù)(天文數(shù)字使用指數(shù)存儲(chǔ)節(jié)儉內(nèi)存)計(jì)數(shù)法兩種方式,同時(shí)可以控制輸出的小數(shù)位數(shù)和寬度:

#include <stdio.h> /* 輸出指定格式的浮點(diǎn)數(shù)數(shù)據(jù) @author Tony 18601767221@163.com @since 20160530 10:06 */ void printf_format_double() { const double num = 3.14159265359; printf("num=%.2f\n", num);//小數(shù)點(diǎn)后保存兩位 printf("num=%030.10f\n",num);//寬度為30,不足用0補(bǔ)齊 //指數(shù)表示 double depth = 1234567000000.0; printf("depth=%e\n",depth);//指數(shù)表示 double value = 1.23456789;// %g 自動(dòng)選擇寬度少的顯示數(shù)據(jù) %f.%e printf("value=%f\tvalue=%e\tvalue=%g",value,value,value); }

printf在輸出字符時(shí)通過%c格式符來輸出,同時(shí)提供了putchar()函數(shù)來輸出1個(gè)字符:

#include <stdio.h> /* 格式化輸出字符 @author Tony 186017672212163.com @since 20160530 10:15 */ void printf_char() { char ch = 'A'; printf("ch=%c\n",ch); putchar(ch); }

printf在輸出字符串時(shí),可以通過sprintf函數(shù)實(shí)現(xiàn)將字符串依照指定的格式拼接:

/* 輸出指定格式的字符串?dāng)?shù)據(jù) @author Tony 18601767221@163.com @since 20160530 10:08 */ void printf_format_string() { char str[100] = "calc"; //輸出字符串 printf("%s\n",str); } /* 使用sprintf函數(shù)實(shí)現(xiàn)字符串拼接 @author Tony 18601767221@163.com @since 20160530 10:32 */ void sprintf_string_append() { char command[100] = { 0 }; sprintf(command, "color %c%c", '4', 'f');//將整數(shù) 實(shí)數(shù)和字符串整合到1個(gè)字符串 printf("整合的結(jié)果為%s\n", command); system(command); system("pause"); char com[10] = "task"; char mand[10] = "listerror"; //command = com + mand; C語言沒有Java語言中的字符串以加號(hào)的方式拼接 /* %s%s表示字符串拼接 %.4s 從左側(cè)截取4位,只能從左側(cè)截取(從某1地址從左向右開始截取) -左側(cè)對(duì)齊 */ sprintf(command,"%s%.4s",com,mand);// printf("%s\n",command); system(command); system("pause"); }

使用sprintf函數(shù)結(jié)合字符串指針實(shí)現(xiàn)身份證的誕生日期信息獲得

/* 通過sprintf截取身份證的出身年月日 @author Tony 18601767221@163.com @since 20160601 14:29 */ void sprintf_id() { char id[19] = "421023198902345678"; //字符串是以\0結(jié)尾 因此要多出1個(gè)字符長度 printf("身份證號(hào)為%s",id); char bornDate[9] = {0}; //初始化1個(gè)字符串保存誕生日期 sprintf(bornDate,"%-.8s",id+6);//地址向后移動(dòng)6位 printf("出身年月日為%s\n",bornDate); }

printf()經(jīng)常使用輸出數(shù)據(jù)類型的格式總結(jié):

格式符 輸出效果
%d 有符號(hào)10進(jìn)制整數(shù)
%lld 有符號(hào)10進(jìn)制整數(shù)(long long)
%#o 無符號(hào)8進(jìn)制整數(shù)(#表明進(jìn)制)
%#x 無符號(hào)106進(jìn)制整數(shù)(#表明進(jìn)制)
%u 無符號(hào)10進(jìn)制整數(shù)
%llu 無符號(hào)10進(jìn)制整數(shù)(long long)用于存儲(chǔ)身份證號(hào)
%c 字符
%s 字符串
%p 指針地址
%f 浮點(diǎn)數(shù)
%a 106進(jìn)制浮點(diǎn)數(shù)
%e 指數(shù)情勢(shì)的浮點(diǎn)數(shù)
%g f和e相比寬度更小的浮點(diǎn)數(shù)

歡迎掃描下方的2維碼,關(guān)注微信公眾服務(wù)號(hào)-藝無止境,分享IT技術(shù)干貨。
藝無止境

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 精品成人免费自拍视频 | 久久国产精品久久精 | 亚洲精品欧美精品中文字幕 | 99毛片| 亚洲另类xxxx | 欧美1卡一卡二卡三新区 | 伊人亚洲 | 国产精品一区二区在线观看 | 国产黄色在线网站 | 国产香蕉一区二区在线网站 | 婷婷激情五月 | 国产免费高清视频在线观看不卡 | 看黄免费网站 | 亚洲精品456在线播放 | 在线观看男女激情小视频 | 久久亚洲精选 | 亚洲精品国产福利 | 美女网站在线观看视频免费的 | 俺来也俺去啦久久综合网 | 性欧美欧美 | 黑人猛交 | 伊人丁香婷婷综合一区二区 | 永久看片 | 成人欧美日本免费观看 | 亚洲一区二区三区在线网站 | 久久欧美| 爱爱小视频免费体验区在线观看 | 久久婷五月综合 | 最新在线观看精品国产福利片 | 亚洲日韩男人网在线 | 国产一区二区三区精品久久呦 | 69热视频在线观看 | 亚洲午夜久久久精品影院视色 | 久久精品国产免费高清 | 亚洲视频在线观看不卡 | 国产成人精品天堂 | 国产精品久久久久一区二区 | 国产成人影院在线观看 | 中文字幕不卡高清免费 | 波多野结衣与老人公gvg在线 | 国产成人高清亚洲一区91 |