【C语言】从第一个c语言程序了解c语言基础

第一个c语言程序

#include <stdio.h> //.h表示头文件 stdio standard 标准 io input output

int main()
{
	printf("Hello World\n");
    return 0;
}

批处理指令

不同于语句,没有分号,写在程序的最前面

常用的一般有包含头文件/宏定义

常用头文件及其库函数
  • <stdio.h>
    • printf() 格式化输出函数
    • scanf() 格式化输入函数
    • EOF -1
    • fclose, fopen → 文件操作的一些函数
    • getchar() 获得一个字符
      • char a = getchar();
    • putchar(a) 输出一个字符
    • gets() 输入一个字符串
    • puts() 输出一个字符串
    • sscanf()
    • sprintf()
  • <stdlib.h>
    • malloc
    • rand
    • abs(整数)
  • <math.h>
    • sqrt()
    • pow(a, b)
    • log() 返回以e为底的对数
    • fabs(浮点数)
    • sin(), cos(), tan(),acos()
    • ceil(向上取整),floor(向下取整),round(四舍五入)
  • <string.h>
    • strlen()
    • strcpy()
    • strcmp()
    • strcat()
精确定义π

acos(-1.0)

main函数

int main()

主函数, 程序的入口,它的函数返回类型为int, 它没有参数

return 0;

与main前面的int相对应, 向操作系统给返回0,表示程序正常结束

{ }

函数体

printf()函数

printf("%% \\ \" \' \" ()[]{} ");
printf会把""里的内容原封不动的打印到屏幕上

转义字符以及一些特殊情况

如果打印的内容跟""有冲突/歧义, 比如 %(占位符) '(字符常量) "(字符串) \(转义字符), 想把他们打印出来,就需要用转义字符

有特殊含义的符号
  • \ 转义字符
    • \n 换行
    • \t 制表符
    • \ 打印一个反斜杠
    • " 字符串 ’ 字符常量
    • %%(特例)
  • a[] 数组
  • a() 函数
  • { } 函数体
  • % 占位符
  • “a” 字符串 “a\0”
  • ‘a’ 字符常量
注释
// 注释某一行

/*
    注释某一个代码块
*/

codeblocks里
//快速注释快捷键 ctrl + shift + c
// 快速取消注释快捷键 ctrl + shift + x

vscode里

ctrl + /
强制类型转换
(转换的类型) 变量名

(int) 3.5

double a = 4.5;
int b = (int) a;
//b = 4

精度低的转精度高的一般影响不大,但精度高的转精度低的可能会损失精度
细说printf() 和 scanf()
  • 占位符与格式化

    如果说""里面没有占位符的话,其他的内容会原封不动的输出出来,如果有占位符,它就会把这个地方用后面对应的参数按照对应的格式来填充,然后输出填充后的内容


  printf("1"); // 1

  printf("%d", 1);
 //%d表示这个地方需要填入一个整数,填入的这个值在后面的参数那儿

  int a = 1;
  printf("%d", a);
    //后面的参数可以是变量,也可以是常量

  int a = 2, b = 3;
  printf("b = %d, a = %d", b, a);

//占位符跟后面的参数一一对应的

常见的占位符(与数据类型是一一对应的)

%d / %i 整型 → int
%f 单精度浮点型 → float
%lf 双精度浮点型 → double
%lld → long long (int)
%c → 字符型变量 → char 
%s → 字符数组/字符串 → char[] / char* 

%p → 指针变量

%u → 无符号 → unsigned 
%llu → unsigned long long

%o  → 8进制

%x → 16进制 abcde

%X → 16进制 ABCDE

常见前缀
0x → 16进制数
0b → 2进制数
08进制数




数据类型

 char 字符型变量
 int 整型变量
 ( short (int), long (int) )
 long long (int) 更长的整型

 float 单精度浮点型
 double 双精度浮点型
 (long double)

char[] 字符数组/字符串
计算机的存储单位

计算机中最小的存储单位是bit(位), 往上有 byte(b), kb, mb, gb, tb…
除了byte和bit是8进制,其他的都是1024进制
1 byte = 8 bit
1 kb = 1024 byte
1mb = 1024 kb
有符号的数据类型,最高位表示的是正负,0表示正,1表示负,因此实际用来存储这个类型的位要少一位的
一个有m个二进制位的有符号的数据类型, 表示的数据范围[-2 ^ (m - 1) ~ 2 ^ (m - 1) - 1]
无符号的数据类型(被u修饰的),用全部的位都来表示大小
一个有m个二进制位的无符号的数据类型, 表示的数据范围[0, 2 ^ m - 1]

char:字符型(1字节, 8bit)

  • 一个字符,计算机存储字符的时候,实际上存储的是它的ASCII码,因此,字符变量的本质其实是一个整数(0~127与一个符号的映射关系)
  • 一定要区别好0 和 ‘0’
    • printf("%d", '0');
    • printf("%d", 0);
  • ASCII码表
  • 可以用%c的格式来打印一个整数,看他对应的符号是啥;也可以用%d来打印一个符号(字符常量),来看它对应的ascii码值是多少
  • 常用的几个ascii码值
    • ‘0’ → 48
    • ‘a’ → 97
    • ‘A’ → 65
    • 小写字母比大写字母的ASCII码值要大32
    • 可以利用小写字母与’a’的差值与大写字母与’A’的差值相同来进行大小写的转换→ ch - 'a' + 'A'ch - 'A' + 'a'

int:整型(4字节, 32bit)

  • 范围
    • 有符号[-2^31, 2^31 - 1]
    • 无符号 [0 ~ 2^32 - 1]
    • 数量级 10^9

long long int: 更长的整型(8字节, 64位)

  • 范围
    • 有符号[-2^63, 2^63 - 1]
    • 无符号 [0 ~ 2^64 - 1]
    • 数量级 10^18

float: 单精度浮点型(4 字节), 精度大概在小数点后4~5
double: 双精度浮点型(8字节), 精度大概在小数点后13~14位

能用double就不用float

  • 细说printf() 和 scanf() 之 宽度与精度

    宽度(放在.前面)→ 占了几个位置(空格)
    %md 来指定宽度,会用' '来填充不足的宽度(空格), 如果m比原来这个数的位数要多,就会让这个数从初始的左对齐变成右对齐,如果想再让他变回左对齐,就加个负号 %-md  %-6d
    
    %0md 会用0来填充不足的宽度(空格),%-0md 
    
    
    精度(放在.后面) → 显示的时候保留几位
    
    %.mf 一般用于保留几位小数
    
    可以把宽度和精度组合起来
    
  • 细说printf() 和 scanf() 之 返回值

printf() 如果成功,则返回写入的字符总数,否则返回一个负数。
printf("%d", printf("123")); 1233

scanf() 如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值