運算子和輸出函式

2021-08-11 04:44:15 字數 4323 閱讀 1222

一.邏輯運算子; 1代表』真』 0代表』假』

&& 與 兩個條件都需要滿足 1&&1 1; 1 && 0 0; &(位址符) 讀 and

|| 或 滿足其中乙個條件 1 || 0 1; 0 || 0 0; or

! 非 與條件相反 如:1 0; 0 1; not

x,y中至少有乙個小於0;

x<0 && y>=0 || x>=0 && y<0 || x<0 && y<0

x < 0 || y < 0;

「&&」 「||」均具有短路求值的特點:

情況1: 表示式1 && 表示式2 當表示式1為假時 ,表示式2的值都不會被計算(可以理解為位元組忽略.)

情況2: 表示式1 || 表示式2 當表示式1為真時 繼續運算。

例子:

int a = 2, b = 3, c;

c = !a && b++;

printf(「b = %d,c = %d」, b, c); //b = 3,c = 0

c = a || b++;

printf(「\nb = %d,c = %d」, b, c); //b = 3,c = 1

c = !a || b++;

printf(「\nb = %d,c = %d」, b, c); //b = 4,c = 1

c = a && b++;

printf(「\nb = %d,c = %d」, b, c); //b = 5,c = 1

運算子補充:

按位 與 : & (00得0,10得0,01得0,11得1)

7&8 = 0

7 00000111

& 8 00001000

00000000

按位 或 : | (00得0,10得1,01得1,11得1)

7|8 = 15

7 00000111

| 8 00001000

00001111

按位 異或 : ^ (00得0,10得1,01得1,11得0)

7^8 = 15

7 00000111

^ 8 00001000

00001111

常用於交換兩個變數的值,如:

int a = 10, b = 20;

a = a^b;

b = a^b;

a = a^b;

printf(「a = %d,b = %d」, a, b); //a = 20,b = 10

取反: ~ (1得0,0得1)

~7 = -8 7 = 00000111 ~= 11111000(補) = 11110111(反) = 10001000(原) = -8;

右移: >> (往右移動,高位補0)

7 >> 2 = 00000111 >> 2 = 00000001 = 1

左移: << (往左移動,低位補0)

7 << 2 = 00000111 << 2 = 00011100 = 28

二.條件運算子

1.三目運算子 (2>1) ? 12:13 ; (2>1)是1 取12 (2<1)是0 1取 13

int a = (3 > 5) ? 10 : 20;

printf(「a = %d」,a);

「表示式1 ? 表示式2 : 表示式3」, 三目運算子;

如果表示式1的值為真,則整個條件表示式的值為表示式2的值,否則為表示式3的值.

三.輸入輸出函式:

1.printf()列印 getchar()請求終端輸入字元 puts()輸出字串 putchar()輸出單個字元 scanf()乙個與輸出介面過度的輸入面板

需要引入的標頭檔案stdio.h 與 #define _crt_secure_no_warnings

int a = 0;

scanf(「%d」,&a); //a = 我們輸入的數字

getchar();

int a = 0,b,c;

printf(「請輸入我的財產:\t」);

scanf(「%d%d%d」, &a,&b,&c); //此時每個數字輸完我們用回車間隔;

//scanf(「%d,%d,%d」, &a, &b, &c); //此時每個數字輸完我們用逗號間隔,全部輸完才按回車;

//scanf(「%d %d %d」, &a, &b, &c); //此時每個數字輸完我們用逗空格間隔,全部輸完才按回車;

輸入矩形長寬求面積!

輸入圓形半徑求面積!

輸入三個學生成績求平均成績!

/*int r;

printf(「請輸入一位正整數作為圓形的半徑:\t」);

scanf(「%d」, &r);

getchar();

printf(「\n圓形的面積是:\t%0.2f」, pai*r*r);*/

/*int w, h;

printf(「請輸入兩個正整數,分別表示矩形的長寬,用逗號間隔:\t」);

scanf(「%d,%d」, &w, &h);

getchar();

printf(「\n矩形的面積為:\t%d」,w*h);*/

int s1,s2,s3;

printf(「請輸入三個正整數,分別表示三名學生的成績,用逗號間隔:\t」);

scanf(「%d,%d,%d」, &s1, &s2,&s3);

getchar();

printf(「\n三名學生的平均成績為:\t%0.2f」, (s1+s2+s3)/3.0f);*/

getchar(),請求終端輸入字元;
putchar(),輸出單個字元

格式控制符擴充: %hd   %d  %ld  %c  %u %f   %-    %0  %m  %.n   %s  %o %x %e  %g
格式控制符擴充 % + :

%- 左對齊(預設是右對齊)

%0 輸出的空位用0補充

%m 表示字寬

如int a = 5 printf(「%06d」,a); //000005

printf(「%-6d」,a); //5

printf(「%-06d」,a); //5 (只有在右對齊且存在空位時才補0)

%.n 對實數,表示輸出n位小數;對字串,表示擷取的字元個數。

%s 表示輸出字串

如: printf(「%s」,」shantao」); //」shantao」

printf(「%10s」,」shantao」); //」 shantao」

printf(「%-10s」,」shantao」); //」shantao 」

printf(「%-010s」,」shantao」); //」shantao 」

printf(「%010s」,」shantao」); //」000shantao」

printf(「%010.5s」,」shantao」); //」00000shant」

printf(「%-010.5s」,」shantao」); //」shant 「

%l 輸出長整形

%d —— 以帶符號的十進位制形式輸出整數

%o —— 以無符號的八進位制形式輸出整數

%x —— 以無符號的十六進製制形式輸出整數

如:int a = 1024;

printf(「十進位制 = %d,八進位制 = %o,十六進製制 = %x」, a, a, a);

//列印結果: 十進位制 = 1024,八進位制 = 2000,十六進製制 = 400

%u —— 以無符號的十進位制形式輸出整數

如:int a = -1;

printf(「%u」,a); //4294967295

%c —— 以字元形式輸出單個字元

%f —— 以小數點形式輸出單、雙精度實數

%e —— 以標準指數形式輸出單、雙精度實數

輸出資料共佔13位,其中整數部分為1位非

零數字,小數點佔1位,小數部分為6位,

指數部分e佔1位,指數符號佔1位,指數為

3位。若輸出資料為負數,還應增加一位整

數部分的符號位。

如:float a = 12345677;

printf(「%e」, a);

a = -12345677;

printf(「%e」, a);

int a = 123456789

%g —— 選用輸出寬度較小的格式輸出實數(只佔7位多餘的自動刪除) 如e 格式 1.23456e + 002

根據數值的大小,自動選擇用f格式或e格式輸出

實數。輸出時選擇佔寬度較小的一種,且不輸出

無意義的零。

Swift 運算子過載和運算子函式

讓已有的運算子對自定義的類和結構進行運算或者重新定義已有運算子的運算規則,這種機制被稱為運算子過載。1,通過過載加號運算子,使自定義的兩個座標結構體物件實現相加 12 3456 78910 11structcenterpointer func left centerpointer,right cen...

輸入運算子和輸出運算子的過載

操作符的過載有一些規則 1.過載操作符必須具有乙個類型別或列舉型別運算元。這條規則強制過載操作符不能重新定義用於內建型別物件的操作符的含義。如 int operator int,int 不可以 2.為類設計過載操作符的時候,必須選擇是將操作符設定為類成員還是普通非成員函式。在某些情況下,程式沒有選擇...

輸入和輸出運算子

通常情況下,輸出運算子第乙個形參是乙個非常量ostream物件的引用。之所以使用ostream是非常量是因為向流寫入內容會改變其狀態 而形參是引用是因為無法直接複製乙個ostream物件。第二個形參一般來說是乙個常量的引用,該常量表示想要列印的類型別。採用引用可以避免複製實參 之所以是常量是因為通常...