#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int Max(int a, int b) //函数前写void是说不需要返回值,就不用加return语句,所以不需要返回值的函数可以这么写
{
int c;
if (a > b)
c = a;
else
c = b;
return c;
}
#define MAX 100 //宏定义变量,所有的MAX都代表100
#define MAX(X,Y) (X>Y?X:Y) //宏定义的函数写法
void test() //函数前写void是说不需要返回值,就不用加return语句,所以不需要返回值的函数可以这么写
{
static int w = 1; //w是一个静态的局部变量
w++;
printf("%d\n", w);
}
int main()
{
char arr_1[] = { 'a','b','c','d','e','\0' }; //字符串写成数组形式要自己加一个'\0',否则字符串长度为随机值
char arr_2[] = { 'a','b','c','d','e' };
char arr_3[] = "abc"; //写成""内的字符串形式,系统自动在最后加'\0'
printf("%d\n", strlen(arr_1));
printf("%d\n", strlen(arr_2));
printf("%d\n\n", strlen(arr_3));
int num_1 = 0;
int num_2 = 0;
scanf_s("%d,%d", &num_1, &num_2); //输入时必须按照scanf""中的格式,有空格也要打空格,有逗号也要打逗号,什么都没有的两个输入间默认打空格
printf("%d\n", Max(num_1, num_2)); //这里是将输入的值放入&num_1这个地址中,而不是将这个地址赋值
printf("%d\n\n", MAX(num_1, num_2)); //调用宏定义,相当于(num_1>num_2?num_1:num_2)
int a = 0;
int b = ~a; //b是有符号的整型
//按(2进制)位取反
//正数原码、反码、补码都一样;
//负数的原码符号位不变,其他位取反>>>反码加一>>>补码
//整数在内存中存储的时候,存储的是二进制的补码
printf("%d\n\n",b); //打印的是这个数的原码
int c = 10;
int d = c++; //后置++,先使用c的值,在对c++
int e = 20;
int f = ++e; //前置++,先++,后使用e的值
printf("c = %d d = %d e = %d f = %d\n\n", c, d,e,f); //11 10 21 21
int g = (int)3.14; //强制类型转换 double >>> int
int h = 3;
printf("a&&b = %d b&&h = %d\n\n", a && b, b && h); //真 - 非0,负数也是非0 假 - 0
//&& - 逻辑与,输出整个表达式的真假值
int a1 = 10;
int b1 = 20;
int max = 0;
max = (a1 > b1 ? a1:b1); //(表达式1 ? 表达式2 : 表达式3);表达式1的结果为真,表达式2执行a1赋值给max,否则表达式3执行
//条件操作符,三目操作符
register int k = 100; //建议把k放入寄存器,但是要不要放入由编译软件决定
typedef unsigned int uint; //typedef - 类型定义 - 类型重定义
uint q = 20;
int i = 0;
while (i < 5)
{
test();
i++;
} //static修饰一个局部变量时,其生命周期变长
//static修饰一个全局变量时,改变其作用域,使其只能在自己的源文件内使用
//static修饰一个函数时,改变了函数的链接属性,使其失去外部链接属性,变成内部链接属性
return 0;
}
C语言学习笔记04
最新推荐文章于 2024-04-22 22:03:22 发布