C4
#include <stdio.h>int main(int argc, const char * argv[]) {// int 占用4個字節 double 占用8個字節// 只是相同類型的數據才能進行運算, 隱式類型轉換 將小類型轉換為大類型, 然后再進行運算// 在賦值的時候系統又給我們進行了一次隱式類型轉換// 發現, 如果在隱式類型轉換的時候, 將大類型轉換為小類型會丟失精度int result = 10.9;printf("result = %d\n", result);// 強制類型轉換格式: (類型)被強制類型轉換的數據int result2 = (int)10.9;printf("result2 = %i", result2);// 自動類型提升// 自動類型的提升, 將參與運算的數據都轉換為同一類型后再運算// 會自動將小的數據類型提升為大的數據類型int result3 = 1 + 9.9; // 1.0 + 9.9 = 10.9// 在算術運算中, 參與運算的是什么類型, 計算出來就是什么類型double result = 1.0 / 2; // 1.0 / 2.0 --> 0.5double result = (double)1 / 2;// 1.0 / 2.0 --> 0.5double result = (double)(1 / 2); // (double)(0) --> 0.0printf("result = %lf\n", result);// 算術運算符的結合性, 左結合, 從左至右的計算// 算術運算符的優先級 * / % 大于 + -// 如果優先級和結合同時存在, 那么先優先級再結核性int result = 3 + 4 * 5 + 6;printf("result = %i\n", result);return 0;
}void test()
{/*+ 加法- 減法* 乘法/ 除法% 取模(取余)*/// 1.定義變量保存計算結果int result;// 2.開始計算result = 1 + 1;result = 1 - 1;result = 2 * 2;result = 6 / 3;// 注意: 取模運算只能用于整數// result = 10 % 3;// result = 12 % 5;// result = 10.0 % 3.0;// 取模運算的正負性取決于左邊的操作數, 如果左邊為負數, 那么結果就是負數// result = 10 % -3;// result = -10 % -3;// result = -10 % 3;// 如果取模運算的左邊小于右邊, 那么結果就是左邊result = 2 % 9;// 3.驗證計算結果printf("result = %i", result);
} //
// main.c
// 逗號運算符
//
// Created by xiaomage on 15/6/4.
// Copyright (c) 2015年 xiaomage. All rights reserved.
//
#include <stdio.h>int main(int argc, const char * argv[]) {int a = 10;int b = 5;int result;// 結合性 從左至右// a = 15, b = 6, result = 15 + 6 = 21a = a + 5, b = b + 1 , result = a + b;printf("a = %i, b = %i, result = %i\n", a, b, result);// 只要是運算符那么一定會有運算結果, 逗號運算符也不例外.// 逗號運算符的結果是 最后一個表達式的結果int a = 10;int b = 5;// 6 a = 10 + 5 = 15 b = 5 + 1 = 6int result = ((a = a + 5), (b = b + 1)); // 僅僅作為了解,逗號表達式返回最后一個的值printf("a = %i, b = %i, result = %i\n", a, b, result);//15,6,6return 0;
} //
// main.c
// 賦值運算符
//
// Created by xiaomage on 15/6/4.
// Copyright (c) 2015年 xiaomage. All rights reserved.
//
#include <stdio.h>int main(int argc, const char * argv[]) {// 最簡單的賦值運算符// 賦值運算符的結合性: 從右至左
// int result = 10;// 復合賦值運算符: += -= *= /= %=int result = 10;
// result = result + 5;// result = 10 + 5; result = 15
// result += 5; // 相當于 result = result + 5;result -= 5; // 相當于result = result - 5;printf("result = %i\n", result);return 0;
} #include <stdio.h>int main(int argc, const char * argv[]) {/*關系運算符:><>=<===!=關系運算符的返回值只有兩種, 要么真, 要么假. 1(真)和0(假)*/int a = 10;int b = 5;int result = a > b;// 嗎? 大于, 真, 非0即真.printf("result = %i\n", result);int a = 10;int b = 8;int result = a != b;printf("result = %i\n", result);// 關系運算符注意點// 關系運算符也有優先級. > < >= <= 優先級大于 == !=// 1 == 1int result = 1 == 10 > 5;// 算術運算符的優先級 大于 關系運算符// 2 < 4int result = 1 + 1 < 2 + 2;// 關系運算符的結合型: 從左至右// 1 > 1int result = 10 > 3 > 1;// 如果優先級和結合性同時存在, 先優先級再結核性// 11 > 9 == 3 > 1// 1 == 3 > 1// 1 == 1int result = 10 + 1 > 5 + 4 == 3 > 1;printf("result = %i\n", result);// 練習
// int result = 3 > 4 + 7; // 3 > 11 = 0
// int result = (3>4) + 7; // 0 + 7// 5 != 4 + 14 > 3 == 10// 5 != 18 > 3 == 10// 5 != 1 == 10// 1 == 10int result = 5 != 4 + 2 * 7 > 3 == 10;printf("result = %i\n", result);return 0;
} //
// main.c
// 自增自減
//
// Created by xiaomage on 15/6/4.
// Copyright (c) 2015年 xiaomage. All rights reserved.
//
#include <stdio.h>int main(int argc, const char * argv[]) {int result = 10;
// result = result + 5;
// result += 5;// result = result + 1;
// result += 1;// 自增: 如果想讓某一個數加1可以使用自增
// result++;
// result++;
// result = result - 1;
// result -= 1;// 自減: 如果想讓某一個數減1可以使用自減
// result--;// 自增的兩種寫法
// result++;
// ++result;// 自減的兩種寫法result--;--result;printf("result = %i\n", result);// 自增自減寫在前面和后面的區別// 如果++寫在變量的前面, 那么會先將變量自增再用自增之后的結果參與運算// 如果++寫在變量的后面, 那么會先將變量的值參與運算再將變量自增// 總結一句話: ++在前, 先自增再運算, ++在后, 先運算再自增int a = 10;
// int b = a++;// b = 10, a = 11
// int b = ++a;// a = 11, b = 11;
// int b = a--;// b = 10, a = 9;int b = --a; // a = 9, b = 9;printf("a = %i , b = %i\n", a, b);// 無論++在前還是在后, 最終都會自增一次int a = 10;// 10 + 12
// int b = (a++) + (++a);// a = 12// b = 22// 10 + 11
// int b = (a++) + (a++);// a = 12// b = 21
// 11 + 12int b = (++a) + (++a);// a = 12// b = 23printf("a = %i, b = %i\n", a, b);// 5++;double doubleValue = 10.9;doubleValue++;printf("%f", doubleValue);int a = 10;
// int b = a++;// b = a; a = a + 1;int b = ++a;// a = a + 1; b = a;printf("a = %i, b = %i\n", a, b); // a = 11, b = 11return 0;
} //
// main.c
// sizeof
//
// Created by xiaomage on 15/6/4.
// Copyright (c) 2015年 xiaomage. All rights reserved.
//
#include <stdio.h>int main(int argc, const char * argv[]) {// sizeof可以用來計算一個變量或一個常量、一種數據類型所占的內存字節數// 注意: sizeof是一個運算符, 不是一個函數// 利用sizeof計算的格式: sizeof(變量/常量/數據類型);// 計算常量占用的內存字節數
// int number = sizeof(10);// 10是一個整型常量, 整型 == int == 4// 如果利用sizeof計算常量, 那么可以省略()int number = sizeof 10;printf("number = %i\n", number);// 計算變量double doubleValue = 10.9;// doubleValue是實型 , 實型 == double == 8
// int number = sizeof(doubleValue);// 如果利用sizeof計算變量, 那么可以省略()int number = sizeof doubleValue;printf("number = %i\n", number);// 計算數據類型int number = sizeof(char);// 注意: 如果利用sizeof計算數據類型, ()不能省略
// int number = sizeof char;printf("number = %i\n", number);return 0;
} //
// main.c
// 邏輯運算符
//
// Created by xiaomage on 15/6/4.
// Copyright (c) 2015年 xiaomage. All rights reserved.
//
#include <stdio.h>int main(int argc, const char * argv[]) {/*邏輯運算符的返回值只有兩種: 要么真要么假, 要么是1(真), 要么是0(假)&&(與運算)格式: 表達式1 && 表達式2結合性: 從左至右只有表達式1和表達式2都為真的時候, 邏輯與表達式才返回真如果表達式1或者表達式2中有一個是假, 那么邏輯與表達式返回的結果都是假口訣: 一假則假||(或運算)格式: 表達式1 || 表達式2結合性: 從左至右只要表達式1或者表達式2中有一個是真的, 邏輯或表達式返回的值就是真只有表達式1和表達式2的值都是假, 邏輯或的值才是假口訣: 一真則真!(非運算)格式: !表達式結合性: 從右至左如果表達式是真, 就返回假如果表達式是加, 就返回真取反*/// 1 && 0int result = 10 > 8 && 5 > 8;printf("result = %i\n", result);// 1 || 0int result = 10 > 18 || 15 > 8;printf("result = %i\n", result);int result = !(10 > 18);// !0printf("result = %i\n", result);// 注意點:// 由于C語言規定, 任何數值都有真假性, 非0即真. 所有邏輯運算符可以直接與數值進行計算
// int result = 0 && 11;
// int result = 0 || 0;// 邏輯非結合性: 從右至左int result = !!!!!!1;// 0printf("result = %i\n", result);// 由于邏輯與有一個特點: 一假則假, 所以如果前面的表達式的值為假, 那么后面的表達式沒有必要參與運算
// int result = 10 > 18 && 9 > 5;// int a = 10;
// int result = 10 > 18 && ++a > 5;
// printf("result = %i , a = %i\n", result, a);// 由于邏輯或有一個特點: 一真則真, 所以如果前面的表達式的值為真, 那么后面的表達式沒有必要參與運算// 邏輯與和邏輯或的這個特點, 稱之為邏輯運算符的短路int a = 10;int result = 10 > 18 || ++a > 5;printf("result = %i , a = %i\n", result, a);return 0;
} //
// main.c
// 三目運算符
//
// Created by xiaomage on 15/6/4.
// Copyright (c) 2015年 xiaomage. All rights reserved.
//
#include <stdio.h>int main(int argc, const char * argv[]) {int a = 20;int b = 15;
// int result = a > b;// 三目運算符格式: 條件表達式 ? 結果A : 結果B// 結合性: 從左至右// 只要條件表達式為真就返回結果A, 如果條件表達式為假, 那么就返回結果B// a大于b嗎? 如果a大于b就返回a, 否則返回b
// int result = (a > b)? a : b;// 三目運算符的優先級: 低于關系運算符和算術運算符// 25 > 15 ? 20 : 15int result = a + 5 > b ? a : b;printf("result = %i\n", result);// 從鍵盤輸入3個整數, 利用三目運算符取出最大值并輸出// 1.提示用于輸出三個整數, 用逗號隔開, 以回車結束printf("請輸入三個整數, 用逗號隔開, 以回車結束\n");// 2.定義三個變量保存用戶輸入的數據int num1, num2, num3;// 3.利用scanf函數接收用戶輸入的數據scanf("%i,%i,%i", &num1, &num2, &num3); // 17, 5, 88// 4.比較三個數的大小, 取出最大值// 4.1獲取num1和num2中的最大值
// int temp = num1 > num2 ? num1 : num2;// 17 > 5 ? 17 : 5; temp = 17// 4.2利用num1和num2中的最大值和剩下的num3比較
// int result = temp > num3 ? temp : num3;// 17 > 88 ? 17 : 88; result = 88// youtube寫法 usb寫法// 1.閱讀性比較差// 2.性能也比較差int result = (num1 > num2 ? num1 : num2) > num3 ? (num1 > num2 ? num1 : num2) : num3;// 5.輸出結果printf("result= %i\n", result);return 0;
}
?
總結
- 上一篇: Codeforces 757C - Fe
- 下一篇: spring-retry----线程内重