目录
- //开发一个C语言程序,让它暂停 5 秒以后再输出内容 "helllo, 尚硅谷!~",并且要求跨
- //平台,在 Windows 和 Linux 下都能运行,如何处理
- //提示
- //1) Windows 平台下的暂停函数的原型是void Sleep(DWORD dwMilliseconds),参数的单位是“毫
- //秒”,位于
头文件。 - //2) Linux 平台下暂停函数的原型是unsigned int sleep(unsigned int seconds),参数的单位是
- //“秒”,位于
头文件 - //
- #include
-
- //说明:在windows 操作系统和 linux操作系统下,生成源码不一样!!!
-
-
- //#include
- //int main() {
- // Sleep(5000); //毫秒
- // puts("hello, 尚硅谷~"); //输出
- // getchar();
- // return 0;
- //}
-
-
- #if _WIN32 //如果是windows平台, 就执行 #include
- #include
- #elif __linux__ //否则判断是不是linux ,如果是linux 就引入
- #include
- #endif
- int main() {
- //不同的平台下调用不同的函数
- #if _WIN32 //识别windows平台
- Sleep(5000); //毫秒
- #elif __linux__ //识别linux平台
- sleep(5); //秒
- #endif
- puts("hello, 尚硅谷~"); //输出
- getchar();
- return 0;
- }
#define N 100 就是宏定义,N为宏名,100是宏的内容(宏所表示的字符串)
- #define _CRT_SECURE_NO_WARNINGS
- #include
- //宏定义 , 宏名 M , 对应的字符串 (n*n+3*n)
- //注意:如果宏对应的字符串 有 () , 那么就不能省略
- #define M (n*n+3*n)
-
-
- int main(){
- int sum;
- int n = 0;
-
- printf("n=%d\n", n);
- printf("Input a number: ");
- scanf("%d", &n); //n = 3
-
- sum = 3*M+4*M+5*M; // 宏展开? 3*(n*n+3*n);+4*(n*n+3*n);+5*(n*n+3*n);
-
- printf("sum=%d\n", sum);
- getchar();
- getchar();
- return 0;
- }
- #define UINT unsigned int
- void main() {
- UINT a, b; // 宏替换 unsigned int a, b;
- }
- #define _CRT_SECURE_NO_WARNINGS
- //带参数的宏定义
- #include
-
- //说明
- //1.MAX 就是带参数的宏
- //2.(a,b) 就是形参
- //3.(a>b) ? a : b是带参数的宏对应字符串,该字符串中可以使用形参
- #define MAX(a,b) (a>b) ? a : b
- int main(){
- int x , y, max;
- printf("input two numbers: ");
- scanf("%d %d", &x, &y);
-
- //说明
- //1. MAX(x, y); 调用带参数宏定义
- //2. 在宏替换时(预处理,由预处理器), 会进行字符串的替换,同时会使用实参, 去替换形参
- //3. 即MAX(x, y) 宏替换后 (x>y) ? x : y
- max = MAX(x, y);
- printf("max=%d\n", max);
- getchar();
- getchar();
- return 0;
- }
- #define SQ(y) y*y
- int main() {
- int a, sq;
- printf("input a number: ");
- scanf("%d", &a);
- sq = SQ(a + 1);//a+1*a+1 例:输入2,最后结果是5
- printf("sq = %d\n", sq);
- getchar();
- return 0;
- }
printf语句是从右向左计算,从左到右输出
- #include
- #include
-
- int SQ(int y) {
- return ((y) * (y));
- }
- int main() {
- int i = 1;
- while (i <= 5) {
- printf("%d^2 = %d\n", i - 1, SQ(i++));//printf语句是从右向左计算,从左到右输出
- }
-
- system("pause");//#include
- return 0;
- }
- #include
- #include
-
- #define SQ(y) ((y)*(y))
-
- int main() {
-
- int i = 1;
- while (i <= 5) {
-
- //SQ(i++)宏调用展开((i++)*(i++))
- printf("%d^2 = %d\n", i , SQ(i++));
- }
-
- system("pause");//#include
- return 0;
- }
因为调用了两次带参宏定义,所以i++运行了两次,要实现之前的结果,则语句改为
printf("%d^2 = %d\n", i-2 , SQ(i++));