首页 > 其他分享 >初识C语言(3)

初识C语言(3)

时间:2022-12-10 11:03:08浏览次数:44  
标签:return int max C语言 ++ 初识 printf main

练习:求两个数中的较大值

int main()
{

int max(int x, int y);
int a = 0;
int b = 0;
int c = 0;
scanf("%d%d",&a,&b);
c = max(a, b);
printf("max=%d\n",c);

return 0;
}
//函数第一种写法
int max(int x, int y)
{
if (x > y)
return x;
else(x < y);
return y;
}

//第二种写法
int max(int x, int y)
{
int z = 0;
if (x > y)
z = x;
else
z = y;
return z;
}

关于sizeof解释

int main()
{
int a = 10;
int arr[] = { 1,2,3,4,5,6 };//六个元素,都是整型
printf("%d\n", sizeof (a));//可以把a两侧的()去掉,说明sizeof是操作符,不是函数
printf("%d\n",sizeof (int) );//int 两侧()不可以去掉
printf("%d\n", sizeof(arr));//计算数组大小,单位是字节
printf("%d\n", sizeof(arr)/sizeof(arr [0]));//

return 0;
}

操作符~按位取反,二进制取反

int main()
{
int a = 0;//4个字节,32个bit位
int b = ~a;//是有符号的整型
//原码、反码、补码
//负数在内存中储存的是二进制的补码
printf("%d\n", b);//使用的,打印的是原码
//a = 0;00000000000000000000000000000000
// 按位取反11111111111111111111111111111111
// 补一位 11111111111111111111111111111110
// 除符号位取反100000000000000000000001
//b = -1;1000000000000000000000000000001
return 0;
}

操作符  --  ++

int main()
{
int a = 10;
//int b = a++;//后置++,先使用a再++(自增)
int b = ++a;//前置++,先++(自增)在使用
printf("a= %d\nb = %d\n", a, b);

return 0;
}

(类型)强制类型转换

int main()
{

int a = (int)3.14;

return 0;
}

关系操作符,略

逻辑操作符

&&逻辑与

||逻辑或

 int main()
{
// 非0表示真
//0表示假
int a = 0;
int b = 1;
int c = a && b;//区分&按位与
int d = a || b;//区分按位或

printf("%d\n", d);
printf("%d\n", c);
return 0;

三目操作符,条件操作符 exp?exp1:exp2

int main ()
{ int a = 10;
int b = 20;
int max ;

max=(a > b ? a : b);
//{if (a > b)
// max = a;
////printf("%d", a);
//else(a < b);
//max = b;
////printf("%d",b);
//}
printf("%d", max);

return 0;
}

逗号表达式,略

下标引用、函数调用和结构成员

int Add(int x, int y)
{
int z = 0;
int z = x+y;
return z;

}
int main()
{
//int arr[10] = {0};
//arr[4];//[]下标引用操作符,用方框访问操作符
int a = 10;
int b = 20;
int sum = Add(a, b);//函数后面的()叫做函数调用操作符
printf("%d\n", sum);

return 0;
}

只要是整数,储存的都是二进制的补码

正数的原补反码相同

负数存储的是补码,需要算出补码

原码是直接算出二进制序列

反码是符号位不变其他位按位取反

补码是反码加一得到


常见关键字

局部变量前都有auto,但省略

extern 引入外部变量

extern  引入外部变量
int main()
{
auto int a = 10;//局部变量//自动变量

return 0;
}

寄存器 register (推荐常用定义)

int main()
{
register int a = 10;//建议把a定义成寄存器变量

return 0;
}

signed 可定义无符号数

int main()
{
int a = -2;//省略了signed
//int 定义的变量是有符号的
//signed int= int

//也可以定义无符号数
unsigned int num = -1;////定义理解了,但是打印出来还是有符号数
printf("%d\n", num);


return 0;
}

struct 结构体关键字

typedef 类型定义、类型重定义

union 联合体、共用体

viod  空

关键词不能和定义的符号名相同

int main() {

typedef unsigned int u_int;
unsigned int num = 20;
u_int num2 = 20;

return 0;
}

小练习:感受简单的循环和作用域的生命周期(第一次做没有理解)

void test()
{
int a = 1;
a++;
printf("a = %d\n", a);

}
int main()
{
int i = 0;

while (i < 5)
{
test();
printf("i=%d\n", i);
i++;
}

return 0;
}

static修饰局部变量,当做全局变量,把局部变量的生命周期延长

void test()
{
static int a = 1;//a 是一个静态的局部变量
a++;
printf("a = %d\n", a);

}
int main()
{
int i = 0;

while (i < 5)
{
test();
i++;
}

return 0;
}

static 限制全局变量,改变了作用域(缩小),出了源文件无法使用

extern 声明外部符号,引用其他源文件全局变量

int main()
{
extern int g_val;
printf("%d\n", g_val);

return 0;
}

static 修饰函数,改变了函数的链接属性

正常函数具有外部链接属性,修饰后只具有内部链接属性

使用外部函数,extern声明

extern int Add(int, int);
int main()
{
int a = 10;
int b = 20;

int sum =Add(a, b);
printf("sum = %d\n",sum );

return 0;
}

#define 定义常量和宏

//#define 定义的标识符常量
#define MAX 100
int main()
{
int a = MAX;


return 0;

}

#difine 可以定义宏--带参数

//函数的实现
int Max(int x, int y)
{
int z;

if (x > y)
z = x;
else(x < y);
z = y;
return z;
}
//宏的方式
#define MAX(X,Y) (X>Y?X:Y)
int main()
{

int a = 10;
int b = 20;
//函数的方式
//int max = Max(a, b);
//宏的方式
int max = MAX(a, b);
//max=(max?a:b)

printf("max = %d\n",max);
return 0;
}


int main()
{

int a = 10;//4个字节
int* p = &a;//取地址a
printf("%p\n",&a);
printf("%p\n", p);
*p = 20 ;//* 解引用操作符
printf("%d\n", a);
//有一种变量是用来存放地址的 - 指针变量
//printf("%p\n", &a);//0000006E3D7EF604 十六进制

return 0;
}


int main()
{
char ch = 'w';

char* pc = &ch;
printf("%d\n",sizeof(ch));//char 本身是一个字节
printf("%d\n", sizeof(pc));//地址占了8个字节

*pc = 'a';
printf("%c",ch);


return 0;
}

指针变量大小取决于平台大小

32位平台地址下载地址是32bit(4字节)

64位平台地址下载地址是64bit(8字节)

标签:return,int,max,C语言,++,初识,printf,main
From: https://blog.51cto.com/u_15903599/5927308

相关文章

  • C语言学习入门 (五) 指针
    直接引用char a;a = 10;程序内部是怎么操作的呢?其实,程序对变量的读写操作,实际上是对变量所在的存储空间进行写入或取出数据。就上面的代码而言,系统会自动将变量名a转换为......
  • 【C语言】03-关键字、标识符、注释
    一、关键字1.什么是关键字C语言提供的有特殊含义的符号,有些地方也叫做“保留字”。 2.一共有哪些关键字C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义......
  • 【初识GNN】Graphical Neural Networks
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • C语言-第三天!
    关键字(32个)关键字说明​​auto​​声明自动变量​​short​​声明短整数​​int​​声明整数​​long​​声明长整数​​float​​声明单精度浮点型​​double​​声明双......
  • C语言运算符优先级列表
    初级运算符()、[]、->、.  高于  单目运算符高于算数运算符(先乘除后加减)高于关系运算符高于逻辑运算符(不包括!)高于条件运算符高于赋值运算符高于逗号......
  • C语言中的结构体与C++中的类异同
    从C语言到C++,是编程思想的进步,技术发展的结果吧,所以C++基本上是兼容C的语法的,C++的很多东西也是从C中继承过来的,然后再发扬,C语言的结构体便是C++中类的雏形。       ......
  • 框架第二课---静态文件配置,request对象方法,pycharm连接MySQL,django连接MySQL,django模
    昨日内容回顾手写web框架1.socket服务端2.http协议3.网址后缀wsgiref模块1.封装socket代码2.处理http相关数据代码封装优化1.函数2.对应关系3.文件、目......
  • OC之【c语言结构体】
    <stdio.h>void//这个机构只能在函数内部使用//定义一个名为Student的结构体类型structintage;//年龄char*name;//姓名floatheight;//身高};......
  • 初识Apache
    默认目录和用户默认用户:apache(自动创建的用户)Apache安装目录:/etc/httpd常用模块配置文件存放目录:/etc/httpd/conf.modules.dApache主配置文件内容简单描述Apac......
  • C语言学习入门
    编译文件:cc-cone.ctwo.c 生成.o目标文件链接文件:ccone.otwo.o   默认生成a.out执行文件指定生成的可执行文件名 cc-ooneone.o 连续编译、链接:ccone.c......