C语言基础

编译程序

gcc xx.c,他会默认生成a.out的可执行文件,在a.out所在目录,执行./a.out

gcc xx.c -o xx,生成一个xx可执行文件,注意不要命名成xx.c,这样会覆盖原先xx.c文件内容

gcc xx.c -o xx -g -Wall的意思是开启所有的语法警告

gcc之检查语法错误

每次修改完,c程序都必须要执行一次gcc

/如果觉得gcc太麻烦,写一个shell脚本/

hell world程序

int main()

{

return 0;

}

可执行程序一执行,就会找一个叫做main的函数然后运行main大括号里面的语句

一个.c文件有且只能有一个main的函数

如果一个函数碰到return这个单词就代表这个函数运行结束.return后面的语句将永远不会被执行.

如果是main函数,他可将前面int省略.return也是可以省略的.

main(int argc,char *argv[])

include是一个C语言标准输入输出库.

注释

//代表单行注释

/* code/注释多行:注意:/ * /*/ 第一个/ *会遇到第一个 * /匹配

注释使用情况

注释代码

解释代码

写清楚文件名,文件产权copyright,文件制作者,如果是某人:要写清联系方式

printf

打印函数:打印双引号""里面的语句,\n:转义字符,代表换行

代码格式

main()

{

}

注意:每碰到一个{,就要换行,再来一个tab键.

常量

1,2,3,4:整型常量

'a','b','c','d':字符常量

1.2,2.2:浮点常量

"hello world":字符串常量

0xff1:地址常量

常量的特性

常量不会改变

常量不能作为左值

8,const(只读常量),define(宏常量)

变量

变量的特点

可以改变的量

可以作为左值,也可以作为右值

变量的定义

在shell脚本里:变量名=值

在C语言里面:数据类型+变量名;

同时定义多个同种类型的变量;数据类型 变量1,变量2;

数据类型

整型数据类型:int

字符数类型:char

浮点类型:float(单精度),double(双精度)

float类型的变量精确到7位

数据类型的作用

标志着后面的变量具体是接收什么类型的值

这个变量在内存中占几个字节

int:4

char:1

float:4

double:8

整型变量

int value=8;

int value;value=8;

字符变量

char ch='c';

char ch;ch='d';

浮点变量

float f1=1.2;

float f1;f1=1.2;

变量的使用

int value;value=8;

标识符的命名规范

硬性规范

不能用数字开头

只能由字母,下划线好数字组成

不能与C语言关键字相同

建议规范

不能用拼音,多查字典

尽量使用驼峰命名法:numOfStudent,或者num_of_student

见名知义

printf具体用法

int a=6;

float=9.8;

printf("a=%d,b=%f\n",a,b);

%m.nf

m<=n+1+整数实际部位的位数,m无效

m>n+1+整数实际部分的位数,m有效,左边以空格补全

地址

内存:字节:Byte是计算机存储的最小单位.

1M=1024KB,1KB=1024Byte,1Byte=8bit

位:bit:一个字节占八位

地址:是每一个字节所对应的编号

进制

二进制:0~1:以0B,0b开头

八进制:0~7:以0开头:

十进制:0~9

十六进制:0~ f,或者0~F:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f:0x开头

大端小端存储法

小端法

低位上的数存储在低的地址所对应的字节

大端法

低位上的数存储在高的地址所对应的字节

用处:一般网络传输内的时候

打印特殊字符

":\ " printf(""shangqian"\n");

':' '或'printf("'shangqian'\n");

%:%% printf("%%%d\n",a);

\ :\ \ printf("%d\ \n",a);

字符与ASCII编码

字符是一个特殊的整型,占8位

'\0'=0,' '=32,'0'=48 'A'=65 'a'=97

全球unicode

scanf

基本用法

#include "stdio.h"

int main()

{

int a;

scanf("%d",&a);

printf("a=%d\n",a);

returnn 0;

}

注意点 scanf,后面必须是取变的地址

一个变量必须先定义出来再进scanf

不要在scanf里多弄花样。

同时输入多个变量

scanf("%d%d",&a,&b);

%d,%f,%c,%lf.%lf是输入double类型的数据

getchar()和putchar()

char ch;

ch=getchar();

putchar(ch);

putchar('\n');

//printf("ch=%c\n",ch);

数据类型转换

隐式转换:精度小的===>精度大的

char===>short int===>int===>float===>double

强制类型转换: (数据类型)变量/常量

int a=9;

int b=8;

float c=(float)a/b;

printf("c=%f\n",c);

运算符

注意点:计算机只进行相同类型数据运算,最后算出来的结果也与他们相同的数据类型

2.隐式转换:精度小的===>精度大的

char===>short int===>int===>float===>double

算数运算符

+ - * / % ++

%:%左右两边的数都是整数

后缀++ 前缀++ 前缀-- 后缀--

位运算符

1.|:

3:0011

5:0101

|:为0111 为7

&:

3:0011

5:0101

&:0001 为1

^:

3:0011

5:0101

^ 0110 为6

~:按位取反

3:0011

~:1100 为-4

+7

原码:0000 0111

反码:0000 0111

补码:0000 0111

-7

原码:1000 0111

反码:1111 1000

补码:1111 1001

数据在内存中是以数据的补码形式存在.

正数取反

+7

原码: 0000 0000 0000 0000 0000 0000 0000 0111

反码:0000 0000 0000 0000 0000 0000 0000 0111

补码:0000 0000 0000 0000 0000 0000 0000 0111

取反补码:1111 1111 1111 1111 1111 1111 1111 1000

反码为:1111 1111 1111 1111 1111 1111 1111 0111

原码为:1000 0000 0000 0000 0000 0000 1000

+7取反为-8

2.-7

原码: 1000 0000 0000 0000 0000 0000 0000 0111

反码:1111 1111 1111 1111 1111 1111 1111 1000

补码:1111 1111 1111 1111 1111 1111 1111 1001

取反补码为:000 0000 0000 0000 0000 0000 0110

反码:000 0000 0000 0000 0000 0000 0110

补码:000 0000 0000 0000 0000 0000 0110

结果:-7取反为+6

左移

正数左移

3左移两位

原码:0000 0011

反码:0000 0011

补码:0000 0011

左移两位补码为:0000 1100

反码为:0000 1100

原码为:0000 1100

结果为12

正数右移

3右移两位

原码为0000 0011

反码:0000 0011

补码:0000 0011

右移两位补码为:0000 0000

负数左移

-3左移两位

原码:1000 0011

反码:1111 1100

补码:1111 1101

左移两位补码为:1111 0100

反码为:1111 0011

原码为:1000 1100

结果为-12

负数右移:以符号位补全

-3右移两位

原码:1000 0011

反码:1111 1100

补码:1111 1101

右移两位补码为:1111 1111

反码为:1111 1110

原码为:1000 0001

结果为-1

-6右移两位

原码:1000 0110

反码:1111 1001

补码:1111 1010

右移两位补码为:1111 1110

反码为:1111 1101

原码为:1000 0010

结果为-2

char:占1个字节

表示范围为-128~127

char ch=128;

printf("ch=%d\n",ch);

结果为-128

char ch=129;

printf("ch=%d\n",ch);

结果为-127

unsigned char

unsigend char a=-1;

printf("a=%d\n",a);

结果为:a=255;

-1的原码:1000 0001

-1的反码:1111 1110

-1的补码:1111 1111

由于unsigne char 是无符号数,所以不用再回原码,直接取补码;

赋值运算符

num+=i==>num=num+i;

num>>=2==num=num>>2;

计算数据类型所占字节长度

printf中%p是打印地址

printf("int所占字节长度=%ld\n",sizeof((num)));

关系运算符

, >= , <= ,!= , ==

在计算当中,关系运算符构成的运算,我们可以看成一个事件,如果这个事件成立,其结果(逻辑结果[0/1])1,如果事件不成立,其结果为0;

逻辑运算符

事件1&&事件2:并且,事件1成立并且事件2也成立,整个逻辑结果才为1;否则,整个逻辑结果为0;

事件1||事件2:或者,事件1成立或者事件2也成立,整个逻辑结果才为1;否则,整个逻辑结果为0;

!事件:非,如果事件成立,逻辑结果为1,!1,整个结果为0;否则,逻辑结果为1.

进阶:事件1&&事件2:如果事件1不成立,就不会执行&&后面的运算.

事件1||事件2:如果事件1成立,就不会执行||后面的运算.

5>3&&8<4-!0 >1.

5>3为1,!0为1,4-!0=3,8<3=0,1&&0=0;

c语言 sizeof(unsign),C语言基础知识相关推荐

  1. 编程c语言零基础知识,零基础学习C语言都需要掌握哪些基础知识

    随着互联网的不断发展,越来越多的人都在学习互联网软件编程开发语言,而今天我们就一起来了解一下,零基础学习C语言都需要掌握哪些基础知识. 无论学习哪门语言先应该了解一下自己所学语言的背景,也可以说它的发 ...

  2. python语言可以处理数据文件吗_Python语言读取Marc后处理文件基础知识.pdf

    Python语言读取Marc后处理文件基础知识 基于 python 的焊接后处理 知识要点:  Python 语言  Python 模块功能  PyPost 后处理模块  PyPost 模块函 ...

  3. c语言上机基础知识,国家计算机二级c语言历年上机真题基础知识(文档)

    公职党棍发绿校规环靶千山:募捐农业絮絮片头漏水.劣品民忧品质女怪广灵?老迈垫被变压须眉过伏乐捐调派.肉商成殓靶台饬令蜡缬共谋哈珀清镇.鬼混气状古碑门首国庆称愿滑坡. 旋子石心汶上酬劳率尔毛蚶了解!小管 ...

  4. r语言 not enough x observations_R基础知识

    R系列之 R基础知识 R语言是用于统计分析,图形表示和报告的编程语言和软件环境.R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大学创建,目前由R语言开发核心团队开发.R语 ...

  5. C语言 sizeof 函数 - C语言零基础入门教程

    目录 一.sizeof 函数简介 二.sizeof 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.sizeof 函数简介 ...

  6. 事业单位计算机知识c语言,事业单位考试计算机基础知识C语言程序设计

    事业单位考试计算机基础知识C语言程序设计 [导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考 ...

  7. apex语言与java比较_Apex 基础知识合辑

    什么是 Apex Apex 是一种类似于 Java 的强类型.面向对象编程语言.在 Apex 类中,语法上可定义方法.变量.静态代码块等,变量用于定义对象的属性,比如对象的名称或者类型,而方法用于定义 ...

  8. python语言三大基本控制结构_Python基础知识之4——三大控制结构

    原博文 2018-12-02 21:38 − 控制结构就是控制程序执行顺序的结构. Python 有三大控制结构,分别是顺序结构.分支结构(选择结构)以及循环结构.任何一个项目或者算法都可以使用这三种 ...

  9. c语言红酒编程题,葡萄酒基础知识试题解析一

    原标题:葡萄酒基础知识试题解析一 单项选择题: 1.下列哪一组完全属于酿造红葡萄酒的品种?(B) A.霞多丽.赤霞珠.梅洛.品丽珠 B.赤霞珠.品丽珠.梅洛.黑比诺 C.雷司令.龙眼.天帕尼洛.桑娇维 ...

  10. c语言联合有什么作用,C语言union共用体(联合体)基础知识及实际用途

    union我想应该不是为了省内存而创建的吧!能省多少内存呢? 我猜测是:一个空间可以同时使用多种类型,而不必在意数据类型,因为我们可以通过里面的数值判断数据类型.(可参考动态语言Lua/Python) ...

最新文章

  1. int*p[ ]与int(*p)[ ]的不同
  2. 计算机网络·数据链路层.三个基本问题
  3. C#中怎样连接数据库并将查询结果转为实体类以及如何加入事务
  4. Nginx负载均衡状态之backup
  5. 学习笔记(26):Python网络编程并发编程-GIL与自定义互斥锁的区别
  6. .NET 6新特性试用 | 热重载
  7. JAVA入门级教学之(赋值运算符)
  8. Hadoop集群安装部署_分布式集群安装_02
  9. 不允许创建临时变量交换两个变量的内容
  10. Esfog_UnityShader教程_NormalMap法线贴图
  11. Java中反射主要应用在哪里_Java学习:反射的应用场景和解析方法
  12. 服务器连接池怎么配置文件,服务器连接池怎么配置
  13. 深入浅出 Cocoa 之 Core Data(3)- 使用绑定
  14. 创新创业技术路线怎么写_【精选】如何撰写创新创业项目申请书.ppt
  15. 成都最最最牛逼的IT公司全在这了
  16. 存储 - emmc ufs nvme
  17. 使用DownloadManager进行更新下载,部分机型下载失败解决方案
  18. 全国省市区建表sql
  19. IC学习笔记——DRV8804
  20. IQ正交调制及星座图

热门文章

  1. 英特尔 超核芯显卡 620mac_2020双11装机。科学计算工作站配置推荐。i9-10980XE加3080显卡加64G ECC内存...
  2. python image 转成字节_Python 办公自动化之 Excel(下)
  3. Spring:连接池连接数据库报错Unknown system variable ‘tx_isolation‘
  4. Java基础:MySQL
  5. SQL:PostgreSQL设置自增序列
  6. 大整数相乘python fft_Python带你理解用于信号同步的CAZAC序列
  7. 一个简单例子理解连表查询
  8. 小目标到大目标一网打尽!阿里提出首个轻骨干重Neck的轻量级目标检测器GiraffeDet...
  9. Word2vec 源码详解
  10. leetcode之回文链表