[源碼下載]
作者:webabcd
介紹
不可或缺 Windows Native 之 C 語言
示例
1、運算符
cOperator.h
#ifndef _MYHEAD_OPERATOR_ #define _MYHEAD_OPERATOR_ #ifdef __cplusplus extern "C" #endif char *demo_cOperator(); #endif
cOperator.c
/*
* 運算符
*/
#include "pch.h"
#include "cOperator.h"
#include "cHelper.h"
char *demo_cOperator()
{
// 算數運算符:+, -, *, /, %, ++, --
// 關系運算符:>, <, ==, >=, <=, !=
// 邏輯運算符:&&, ||, !
// 位操作運算符:&, |, ~, ^, <<, >>
// & - 按位與:都是 1 則為 1,其他情況為 0;比如 1001 & 0001 = 0001
// | - 按位或:有一個是 1 則為 1,其他情況為 0;比如 1001 | 0001 = 1001
// ^ - 按位異或:不一樣則為 1,一樣則為 0;比如 1001 | 0001 = 1000
// ~ - 按位非:~1001 = 0110
// 賦值運算符:=, +=, -=, *=, /=, %=, &=, |=, ^=, >>=, <<=
// 條件運算符:三目運算符 ?:
// 指針運算符:* 用於取內容 & 用於取地址
// i++, i本身加1,表達式i++的值為i加1前的值
// ++i, i本身加1,表達式++i的值為i加1後的值
int i = 0;
i++; // 此處 i 的值為 1, i++ 的值為 0
int j = 0;
++j; // 此處 j 的值為 1, ++j 的值為 1
// sizeof - 是 C 裡面的關鍵字,而不是函數,其是求字節數運算符
// 計算一個數據類型所占用空間的大小
int intSize = sizeof(short); // 2, 不同平台下 int short long 之類的占用空間可能不一樣,用 sizeof 就可以知道其占用空間的大小了
char *str = "abcdefghijklmnopqrstuvwxyz";
int dataSize = sizeof(str); // 4, 這裡計算的是 str 指針所占用空間的大小
return str_concat2(int_toString(intSize), int_toString(dataSize));
}
2、表達式,條件語句,循環語句,轉向語句,空語句等
cStatement.h
#ifndef _MYHEAD_STATEMENT_ #define _MYHEAD_STATEMENT_ #ifdef __cplusplus extern "C" #endif char *demo_cStatement(); #endif
cStatement.c
/*
* 表達式,條件語句,循環語句,轉向語句,空語句等
*/
#include "pch.h"
#include "cStatement.h"
#include "cHelper.h"
char *demo_cStatement()
{
// 所謂表達式語句就是由表達式加上分號“;”組成的
// i++, i本身加1,表達式i++的值為i加1前的值
// ++i, i本身加1,表達式++i的值為i加1後的值
// 復合語句(拿大括號括起來)
{
int p1 = 1;
int p2 = 2;
}
// 只有“;”的語句就叫做空語句
while (0)
{
; // 這一句就是空語句
}
// 上面的等於下面的
while (0)
;
// 上面的等於下面的
while (0);
// 分支結構的語句(if else)
int a = 0, b;
if (a == 1) b = 1; // 注意:變量 a 在此之前如果不初始化的話,則這裡是無法編譯過的,也就是說未賦值的變量不能使用
if (a == 1)
b = 2;
else if (a == 2)
b = 3;
else
b = 4;
// 分支結構的語句(switch case)
int x = 0, y;
switch (x)
{
case 1:
y = 2;
break;
case 2:
y = 3;
break;
default:
y = 4;
}
// 分支結構的語句(?:)
int m, n = 0;
m = n == 1 ? 2 : 3;
// 循環語句(while)
int i = 0;
while (i < 100)
{
i++;
}
// 循環語句(do while)
int j = 0;
do
{
j++;
}
while (j < 100);
// 循環語句(for)
for (i = 0; i < 100; i++)
{
}
for (i = 0; i < 100; )
{
i++;
}
for (i = 0, j = 0; i < 100 && j < 100; i++, j++)
{
i++;
j++;
}
int z = 0;
for ( ; z < 100; )
{
z++;
}
// 轉向語句:break - 跳出循環
// 轉向語句:continue - 跳過循環體的剩余的語句,直接進入下一次循環判斷
// 轉向語句:return - 退出函數,並提供返回值
// 轉向語句:goto - 跳轉至指定的標識符處,並執行其後的語句(需合理使用,比如多層嵌套語句退出時,使用 goto 就是很合理的)
int result = 0;
myAnchor: // 自定義標識符(標識符加冒號)
if (result == 1)
{
result = 100;
}
if (result == 0)
{
result = 1;
goto myAnchor; // 跳轉至指定的標識符處(myAnchor:),並執行其後的語句
}
return str_concat2("看代碼及注釋吧", int_toString(result));
}
OK
[源碼下載]