20160125.CCPP詳解體系(0004天)
程式片段(01):寬字元.c
內容概要:寬字元
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
//01.寬窄字元的使用特點:
// 1.寬窄字元變數的使用特點:
// (1).只是儲存資料的格子大小不一樣,窄字元小,寬字元大
// (2).如果儲存相同的資料,只要不發生資料越界,或者儲存的資料即使越界
// 但是列印的時候成中文字元字元儲存單元進行列印,列印效果一致,否則亂碼
// 2.寬窄字元所佔用的記憶體位元組數計算方式:
// 窄字元:
// 英文字元佔用一個位元組,中文字元佔用兩個位元組
// 寬字元:
// 所有字元(無論是寬字元還是窄字元)統一佔用兩個位元組
// 3.關於寬窄字元的亂碼解決方案:
// MessageBox();
// (1).跟專案設定有關
// (2).字符集設定結果:
// 預設,使用Unicode字符集,要求中文字元必須使用寬字元
// 設定,使用多位元組字符集,要求中文不必要使用寬字元,窄字元就行了
// MessageBox();+TEXT():有參巨集
// (1).跟專案編譯器設定毫無關係
// (2).使用中文的時候,需要用有參巨集TEXT();進行處理
// 其實TEXT():有參巨集就是在處理寬窄字元問題
// 中文自適應的進行改變(寬窄字元自動選擇)
// 先判斷專案編譯器設定,再改變中文的形式特點(寬窄字元)
// MessageBoxA();
// (1).強制使用多位元組字符集
// (2).也就是中文必須使用窄字元
// MessageBoxW();
// (1).強制使用Unicode字符集
// (2).也就是中文必須使用寬字元
int main01(void)
{
char ch = 'A';//表示範圍小,節約記憶體
wchar_t ch1 = L'0';//寬字元佔用兩個位元組,表示範圍大,耗費記憶體
printf("%d, %d \n", sizeof(char), sizeof(wchar_t));
printf("%d, %d \n", sizeof(ch), sizeof(ch1));
printf("%d \n",sizeof("1我"));//4byte 三個字元
printf("%d \n",sizeof(L"1我"));//6byte "1"字元,"我"字元,"\0"字元-->3個字元
//MessageBox(0, L"你好天朝!", L"你好世界!", 0);
//設定Unicode,需要使用寬字元MessageBox(0, L"你好天朝!", L"你好世界!", 0);
//設定多位元組字元,需要使用在字元MessageBox(0, "你好天朝!", "你好世界!", 0);
//中文字串具體使用寬字元還是窄字元和專案設定有關:
// 預設Unicode,需要對中文使用寬字元
// 設定多位元組字符集,不需要使用寬字元
//A代表呼叫多位元組字符集,需要使用窄字元來操作中文
MessageBoxA(0, "你好天朝!", "你好世界!", 0);
//W代表呼叫預設呼叫Unicode,需要使用寬字元來操作中文
MessageBoxW(0, L"你好中文!", L"你好世界!", 0);
//TEXT可以進行相容自動調整,也就是忽略寬窄字元,自適應顯示
MessageBox(0, TEXT("你好天朝!"), TEXT("你好世界!"), 0);
system("pause");
return 1;
}
程式片段(02):寬字元處理.c
內容概要:寬字元處理
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>//包含本地化設定函式的標頭檔案
//01.寬窄字元特點:
// 1.無論是寬字元還是窄字元,賦予同一個資料,那麼對映的實體都一樣,只是儲存盒子不一樣
// 2.既然資料實體一致,那麼解析的時候就看解析方式的特點了
// %s:表示按照字串的方式進行解析,知道解析到字串識別符號
// %c%c:表示按照兩個位元組對應於兩個字元進行解析,解析結果如同字串
int main01(void)
{
char str[10] = "我";//無論是寬窄字元所對映的資料實體都一致
printf("%s \n", str);//按照字串進行解析
printf("%c%c \n", str[0], str[1]);//窄字元顯示漢字(多個字元組合進行解析)
system("pause");
return 1;
}
//02.寬字元的使用特點:
// 1.需要設定國際化當中的本地化:
// 引入標頭檔案:#include <locale.h>
// 設定本地化:setlocale(LC_ALL, "zh-CN");
// 2.寬字元函式處理寬字元的時候,所以寬字元
// 都給必須新增L標識
// 3.寬字元對應的格式控制符:
// L"%ls"
int main02(void)
{
setlocale(LC_ALL, "zh-CN");//全域性使用中文環境(國際化設定)
//wchar_t wstr[10] = L"1234";
wchar_t wstr[10] = L"1234我是色狼!";//寬字元用wprintf,顯示英文
wprintf(L"%ls \n", wstr);//L,l寬字元處理
system("pause");
return 1;
}
//03.寬窄字元常量都必須採用單引號('')引上
int main(void)
{
setlocale(LC_ALL, "zh-CN");
wchar_t ch = L'我';
putwchar(ch);
system("pause");
return 1;
}
int main04(void)
{
char ch = 'A';
wchar_t wch = L'A';
printf("%d \n", wch);
system("pause");
return 1;
}
int main05(void)
{
setlocale(LC_ALL, "zh-CN");
//printf("%s", L"我打算的");//寬字元不能使用窄字元的列印方式
wprintf(L"%ls", L"我是");
system("pause");
return 1;
}
程式片段(03):auto.c
內容概要:auto關鍵字
#include <stdio.h>
//01.auto關鍵字使用特點:
// 1.標識變數的自動回收釋放
// 2.只要在函式內部的變數:
// 使用auto關鍵字修飾變數的宣告與沒有宣告的效果一致
void go(void)
{
int num = 10;
printf("%p \n", &num);
}
int main01(void)
{
auto int num = 10;//自動分配自動釋放
go();
printf("AAAAAAAAAAAAAAAA \n");
go();
printf("AAAAAAAAAAAAAAAA \n");
system("pause");
return 1;
}
程式片段(04):main.cpp
內容概要:auto關鍵字Qt測試
#include "mainwindow.h"
#include <QApplication>
void go()
{
MainWindow w;//建立
w.show();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
go();
return a.exec();
}
程式片段(05):bool.c
內容概要:C99語法補充_Bool
#include <stdio.h>
#include <stdlib.h>
//01.在C99語法當中引入了基於C語言的布林型別:
// 1._Bool型別
// 2.佔用單個位元組
// 3.true(非0)|false(0)-->單個位元組儲存
int main01(void)
{
_Bool bl = 10;//true|false 非0|0
printf("%d \n", bl);
printf("%d \n", sizeof(bl));//一個位元組
bl ? printf("周瑞富愛鳳姐! \n") : printf("周瑞富不愛鳳姐! \n");
system("pause");
return 1;
}
程式片段(06):int.c
內容概要:整數的操作意義
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//01.迴圈複雜指令:
// for /l %i in (1,1,5) do
int main01(void)
{
char cmd[100];
int N;
scanf("%[^\n]", cmd);//處理攜帶空格的字串
scanf("%d", &N);
char strcmd[200] = { 0 };
sprintf(strcmd, "for /l %%i in (1,1,%d) do %s", N, cmd);//對映
//printf("%s", strcmd);
system(strcmd);
system("pause");
return 1;
}
程式片段(07):Test.c
內容概要:啃爹運演算法則解析
#include <stdio.h>
#include <stdlib.h>
//01.總結:
// 1.從結果可以退出計算原理,保證交換律依然有效
// 也就是同時出現++db或者同時出現db++那麼
// 無論如何都得保證其運算結果一致
// 2.單實體的資料如何確定?
// 前加就以最有一次加加運算的結果為實體資料
// 後加就以第一次加加運算的結果為實體資料
// 所有實體的的資料一致
int main01(void)
{
printf("Hello World!!! \n");
double db = 1;
//double y = ++db*++db;//9
//double y = db++*db++;//1
double y = db++ + db++ + db++;//3
//printf("%p \n", &db);
printf("%f \n", y);
system("pause");
return 1;
}
程式片段(08):隨機數.c
內容概要:賭博機實現
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//01.賭博問題模擬:
// 1.隨機生成0~100之間的數字
// 2.生成的數字在>=80之間的數字
// 概率為20%
//02.隨機數生成要素:
// 1.隨機數種子
// 2.種植數種子
// 3.隨機數函式
// 4.求餘運算子
int main01(void)
{
time_t ts;
unsigned int num = time(&ts);//根據時間生成隨機數種子
srand(num);
int data = rand() % 100;//隨機數的生成依賴於隨機數種子
printf("%d \n", data);
system("pause");
return 1;
}
int main02(void)
{
time_t ts;
unsigned int num = (unsigned int)time(&ts);
srand(num);
int data = rand() % 100;
printf("%d \n", data);
data >= 90 ? printf("贏了 \n") : printf("輸了 \n");
system("pause");
return 1;
}
程式片段(09):列印可見字元.c
內容概要:列印可見字元
#include <stdio.h>
#include <stdlib.h>
//01.字元的可見性:
// 1.可見字元:
// ASCII碼值在32~126之間的字元就是課件字元
// 2.不可見字元:
// ASCII碼值在32~126之外的字元就是不可見字元
int main01(void)
{
for (int i = 32; i < 127; i++)
{
putchar(i);
}
system("pause");
return 1;
}
程式片段(10):main.c
內容概要:簡單排序
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
//將a,b,c三個變數的數值按照從小打到進行排列
(a > b) ? (a=a^b,b=a^b,a=a^b) : 0;
(a > c) ? (a=a^c,c=a^c,a=a^c) : 0;
(b > c) ? (b=b^c,c=b^c,b=b^c) : 0;
//a=a^b,b=a^b,a=a^b;可以實現變數儲存的資料交換操作
printf("%d, %d, %d \n", a, b, c);//從小達到
system("pause");
return 1;
}
相關文章
- MySQL體系結構詳解MySql
- MySQL體系結構圖詳解MySql
- 【00】Oracle體系結構詳解Oracle
- 【DATAGUARD】Oracle Dataguard體系架構詳解Oracle架構
- Oracle Golden Gate體系架構詳解OracleGo架構
- springmvc中Dispatchservlet繼承體系詳解SpringMVCServlet繼承
- View 體系詳解:View 的工作流程View
- 詳解iOS打包、釋出與證書體系iOS
- 【PG體系結構】Postgresql 配置檔案詳解SQL
- Java核心知識體系6:集合框架詳解Java框架
- Java Servlet詳解(體系結構+註解配置+生命週期)JavaServlet
- 一圖詳解騰訊雲原生安全防護體系
- Tungsten Fabric架構解析丨詳解vRouter體系結構架構VR
- .NET平臺系列7 .NET Core 體系結構詳解
- Eureka詳解系列(三)--探索Eureka強大的配置體系
- 三極體使用詳解
- Http請求體詳解HTTP
- DIY天地(硬體詳解)
- 28頁PPT詳解騰訊資料探勘體系及應用
- 20160217.CCPP體系詳解(0027天)
- SQL Server資料體系和應用程式邏輯詳解SQLServer
- jQuery事件系統詳解jQuery事件
- View 體系詳解:座標系、滑動、手勢和事件分發機制View事件
- Express中介軟體原理詳解Express
- JVM記憶體模型詳解JVM記憶體模型
- 詳解css媒體查詢CSS
- JVM堆記憶體詳解JVM記憶體
- iOS記憶體管理詳解iOS記憶體
- middleware 中介軟體詳解
- Java集合中List,Set以及Map等集合體系詳解(史上最全)Java
- 20160124.CCPP詳解體系(0003天)
- 20160126.CCPP體系詳解(0005天)
- 20160127.CCPP體系詳解(0006天)
- 20160130.CCPP體系詳解(0009天)
- 20160203.CCPP體系詳解(0013天)
- 20160211.CCPP體系詳解(0021天)
- 20160213.CCPP體系詳解(0023天)
- 20160214.CCPP體系詳解(0024天)