第二章完结
This commit is contained in:
110
Chapter2/变量/auto.c
Normal file
110
Chapter2/变量/auto.c
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
void func(void)
|
||||||
|
{
|
||||||
|
int x = 0;
|
||||||
|
x = x + 1;
|
||||||
|
printf("%p->%d\n", &x, x);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func1(void)
|
||||||
|
{
|
||||||
|
static int x = 0;
|
||||||
|
x = x + 1;
|
||||||
|
printf("%p->%d\n", &x, x);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
|
||||||
|
// auto int i;
|
||||||
|
// printf("i=%d\n", i);
|
||||||
|
// out:i=21915,每次都不一样
|
||||||
|
|
||||||
|
// static int i;
|
||||||
|
// printf("i=%d\n", i);
|
||||||
|
// out:i=1
|
||||||
|
|
||||||
|
// func();
|
||||||
|
// func();
|
||||||
|
// func();
|
||||||
|
// out::
|
||||||
|
// 0x7ffc3c4ca4f4->1
|
||||||
|
// 0x7ffc3c4ca4f4->1
|
||||||
|
// 0x7ffc3c4ca4f4->1
|
||||||
|
// 三次地址看着一样
|
||||||
|
// 但是是每次函数开始取用,结束销毁的
|
||||||
|
// 只是gcc刚好都取的栈上同一块地址
|
||||||
|
|
||||||
|
func1();
|
||||||
|
func1();
|
||||||
|
func1();
|
||||||
|
// out::
|
||||||
|
// 0x55fd83c96014->1
|
||||||
|
// 0x55fd83c96014->2
|
||||||
|
// 0x55fd83c96014->3
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
int i = 100;
|
||||||
|
|
||||||
|
void func(int i)
|
||||||
|
{
|
||||||
|
printf("i=%d\n", i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
|
||||||
|
int i = 3;
|
||||||
|
|
||||||
|
// printf("i=%d\n", i);
|
||||||
|
// out:
|
||||||
|
// i=3
|
||||||
|
|
||||||
|
// {
|
||||||
|
// printf("i=%d\n", i);
|
||||||
|
// }
|
||||||
|
// out:
|
||||||
|
// i=3
|
||||||
|
|
||||||
|
// {
|
||||||
|
// i = 5;
|
||||||
|
// printf("i=%d\n", i);
|
||||||
|
// }
|
||||||
|
// out:
|
||||||
|
// i=5
|
||||||
|
|
||||||
|
// func(i);
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
void print_star(void)
|
||||||
|
{
|
||||||
|
for (i = 0; i < 5; i++)
|
||||||
|
printf("*");
|
||||||
|
printf("\n");
|
||||||
|
printf("[%s]i=%d\n", __FUNCTION__, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
for (i = 0; i < 5; i++)
|
||||||
|
print_star();
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
// out:
|
||||||
|
// *****
|
||||||
|
// [print_star] i = 5
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
15
Chapter2/变量/minproj/main.c
Normal file
15
Chapter2/变量/minproj/main.c
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "proj.h"
|
||||||
|
|
||||||
|
static int i = 10;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
printf("[%s]i=%d\n", __FUNCTION__, i);
|
||||||
|
// func();
|
||||||
|
call_func();
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
17
Chapter2/变量/minproj/proj.c
Normal file
17
Chapter2/变量/minproj/proj.c
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "proj.h"
|
||||||
|
|
||||||
|
static int i = 100;
|
||||||
|
|
||||||
|
static void func(void)
|
||||||
|
{
|
||||||
|
printf("[%s]i=%d\n", __FUNCTION__, i);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void call_func(void)
|
||||||
|
{
|
||||||
|
func();
|
||||||
|
}
|
||||||
5
Chapter2/变量/minproj/proj.h
Normal file
5
Chapter2/变量/minproj/proj.h
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#ifndef PROJ_H___
|
||||||
|
#define PROJ_H___
|
||||||
|
|
||||||
|
void call_func(void);
|
||||||
|
#endif
|
||||||
14
Chapter2/变量/minproj_extern/main.c
Normal file
14
Chapter2/变量/minproj_extern/main.c
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "proj.h"
|
||||||
|
|
||||||
|
int i = 10;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
printf("[%s]i=%d\n", __FUNCTION__, i);
|
||||||
|
func();
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
13
Chapter2/变量/minproj_extern/proj.c
Normal file
13
Chapter2/变量/minproj_extern/proj.c
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "proj.h"
|
||||||
|
|
||||||
|
extern int i;
|
||||||
|
// extern i;也是可以的,会有警告
|
||||||
|
|
||||||
|
void func(void)
|
||||||
|
{
|
||||||
|
printf("[%s]i=%d\n", __FUNCTION__, i);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
5
Chapter2/变量/minproj_extern/proj.h
Normal file
5
Chapter2/变量/minproj_extern/proj.h
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#ifndef PROJ_H___
|
||||||
|
#define PROJ_H___
|
||||||
|
|
||||||
|
void func(void);
|
||||||
|
#endif
|
||||||
103
Chapter2/运算符/op.c
Normal file
103
Chapter2/运算符/op.c
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
#if 0
|
||||||
|
i++相当于i=i+1
|
||||||
|
i--相当于i=i-1
|
||||||
|
|
||||||
|
int i=1;
|
||||||
|
i++;表达式值为1,i值为2
|
||||||
|
++i;表达式值为2,i值为2
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int i = 1, j = 10, value;
|
||||||
|
|
||||||
|
// value = i++ + ++j;
|
||||||
|
// 相当于
|
||||||
|
// j = j + 1;
|
||||||
|
// value = i + j;
|
||||||
|
// i = i + 1;
|
||||||
|
// out:
|
||||||
|
// i = 0 j = 11 value = 10
|
||||||
|
|
||||||
|
// value = --i + j++;
|
||||||
|
// i = i - 1;
|
||||||
|
// value = i + j;
|
||||||
|
// j = j + 1;
|
||||||
|
// out:
|
||||||
|
// i = 1 j = 12 value = 12
|
||||||
|
|
||||||
|
// value = i++ + ++i - i-- + --i;
|
||||||
|
// 避免单个变量多次自增或者自减
|
||||||
|
// 不同编译器可能结果不同,也难为自己和他人
|
||||||
|
|
||||||
|
// printf("i=%d\n", i);
|
||||||
|
// printf("j=%d\n", j);
|
||||||
|
// printf("value=%d\n", value);
|
||||||
|
|
||||||
|
// printf("%d\n", i > j);
|
||||||
|
|
||||||
|
int a = 1, b = 2, c = 3, d = 4;
|
||||||
|
int m = 1, n = 1;
|
||||||
|
|
||||||
|
// (m = a > b) && (n = c > d);
|
||||||
|
// printf("m = %d\nn = %d\n", m, n);
|
||||||
|
// a>b为假,所以左边为0,右边直接不判断了,n依旧为1而不是0!
|
||||||
|
// out:
|
||||||
|
// m = 0
|
||||||
|
// n = 1
|
||||||
|
|
||||||
|
(m = a > b) || (n = c > d);
|
||||||
|
printf("m = %d\nn = %d\n", m, n);
|
||||||
|
// a>b为假,所以左边为0,右边继续判断
|
||||||
|
// out:
|
||||||
|
// m = 0
|
||||||
|
// n = 0
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int i = 0, j = 10, value;
|
||||||
|
|
||||||
|
// int a = 6;
|
||||||
|
// a -= a *= a += 3;
|
||||||
|
// a -=.. 81-81=0
|
||||||
|
// a *=.. 9*9=81给上面
|
||||||
|
// a += 3; 6+3=9给上面
|
||||||
|
// 故a=0
|
||||||
|
|
||||||
|
// printf("%d\n", sizeof(int));
|
||||||
|
// printf("%d\n", sizeof(double));
|
||||||
|
// out:
|
||||||
|
// 4
|
||||||
|
// 8
|
||||||
|
|
||||||
|
// int a = 3;
|
||||||
|
// float f = 3.9;
|
||||||
|
// a = f;
|
||||||
|
// printf("a=%d\n", a);
|
||||||
|
// printf("f=%f\n", f);
|
||||||
|
// out:
|
||||||
|
// a=3
|
||||||
|
// f=3.900000
|
||||||
|
|
||||||
|
// int a = 3;
|
||||||
|
// float f = 3.9;
|
||||||
|
// a = (int)f; // 这个过程不改变f本身的地址和值
|
||||||
|
// printf("a=%d\n", a);
|
||||||
|
// printf("f=%f\n", f);
|
||||||
|
// out:
|
||||||
|
// a=3
|
||||||
|
// f=3.900000
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user