当前位置: 首页 > news >正文

C语言:变量,运算符,基础IO

C语言基础

1 变量

程序运行期间值允许改变。变量会在内存分配存储空间,通过变量名访问,先定义,后使用。

1.1 变量命名约束

  1. 组成字符仅限字母、数字、下划线,首字符不能为数字。
  2. 禁止和C语言关键字重名。
  3. 尽量不与标准库函数冲突。
  4. 命名推荐见名知意,可选驼峰命名或下划线命名。

1.2 基础数据类型

整型:short、unsigned short、int、unsigned int、long、unsigned long
浮点型:float、double
字符型:char、unsigned char
布尔型:bool,依赖头文件 <stdbool.h>

1.3 初始化与赋值

初始化:定义变量时直接赋予初始值。
赋值:变量定义完成后,通过 = 修改存储内容。
局部变量未初始化时内存为随机值,禁止直接参与运算。

2 表达式与类型转换

表达式由运算符、常量、变量组合构成,任意表达式具备数据类型与运算结果。

2.1 隐式类型转换

混合运算时自动转换,转换方向:低精度向高精度提升。
转换层级参考:char/short → int → long → unsigned → float → double
规则:

  1. char、short参与运算,强制提升为int;
  2. float参与运算,强制提升为double。

2.2 强制类型转换

语法格式: (目标类型)变量 / (目标类型)(表达式)

3 运算符

3.1 算术运算符

      • / % ++ –
  1. % 取模运算符仅支持整型,浮点数据不可使用;
  2. ++ 、 – 只能作用于变量;
  3. i++ :先取值,后自增; ++i :先自增,后取值。

3.2 赋值运算符

= += -= *= /= %=
左值:能够放置在等号左侧,只有变量满足条件。
右值:变量、常量、合法表达式均可。

跨类型赋值规则:

  1. 浮点数据赋值给整型,直接舍弃小数部分;
  2. 大数据存入低位宽类型,直接截断二进制低位,结果不可预判。

3.3 逗号运算符

语法: (表达式1,表达式2,表达式3)
运算顺序从左至右依次执行,整体结果等于最右侧表达式的值。

3.4 sizeof运算符

获取变量或数据类型占用内存字节大小。

c

int a;
sizeof(int);
sizeof(a);

3.5 优先级大致顺序

括号 > 单目运算符 > 双目运算符 > 三目运算符 > 赋值运算符 > 逗号运算符

4 基础输入输出函数

头文件: <stdio.h>

  1. 单字符IO函数

putchar()

功能:向终端输出单个字符。

c

putchar(表达式);

规则:

  1. 仅支持输出单个字符;
  2. 参数会解析为ASCII码对应字符;
  3. 返回值:输出字符的ASCII码(int类型)。

示例:连续输出hello

c

#include <stdio.h>
int main(void)
{
putchar(‘h’);
putchar(‘e’);
putchar(‘l’);
putchar(‘l’);
putchar(‘o’);
putchar(‘\n’);
return 0;
}

getchar()

功能:从终端读取一个字符。

c

char ch;
ch = getchar();

  1. 格式化IO函数
  • printf() :格式化数据输出到终端
  • scanf() :从终端格式化读取数据
  1. 字符串IO函数
  • gets() :读取字符串,存在缓冲区溢出漏洞,标准C已经废弃,禁止使用。
  • puts() :输出字符串,自动追加换行符。

补充区分

  1. putchar / getchar :面向单个字符;
  2. printf / scanf :支持多种数据类型格式化读写;
  3. puts / gets :专门操作字符串。
http://www.jsqmd.com/news/1245963/

相关文章:

  • 解构复杂信息:从亚文化标题到技术文档的通用分析框架
  • TM4C123BH6ZRB嵌入式开发实战:通信接口、DMA与系统设计
  • CSS禁用点击交互的3种实现方案与原理详解
  • 帝舵常州网点地址及售后服务热线最新公示(2026年7月版) - 帝舵中国官方服务中心
  • TypeScript超越Python:AI时代静态类型语言的优势
  • 如何用嘎嘎降AI处理传播学论文:传播学毕业论文降AI4.8元知网维普达标完整操作教程
  • 2026年7月最新!积家沈阳服务网点地址与售后客服热线电话通知 - 积家官方售后服务中心
  • 【AI副业变现黄金公式】:3个私域流量裂变模型+7天启动SOP,92%新手已验证有效
  • 用LiteLLM管理GPT/Claude/DeepSeek的3个工程陷阱:从负载均衡到成本控制
  • 佳能LBP623cdn打印机竖线故障诊断与维修指南
  • C++内存池实现:从原理到实战,提升性能与减少碎片
  • 豆包商户优化服务商核心能力与选型指南
  • Trae CN最新版安装与配置全指南
  • 揭秘评审不会明说的打分潜规则
  • Python全栈入门到实战【数据库篇 14】MySQL多表关系与笛卡尔积详解,数据库设计的核心基础
  • C++网络编程:从零实现TinyWebServer与Epoll IO多路复用详解
  • TMS570LS系列MCU迁移实战:从LS31x/21x到LS12x/11x的兼容性解析与避坑指南
  • Kimi K3订阅方案深度解析:AI长文本处理与文件解析实战指南
  • Unity异步任务取消实战:UniTask与CancellationTokenSource核心用法
  • 2026年最新教程:照片压缩到20K以内怎么弄?亲测有效的免费方法 - 图片处理研究员
  • 1150针CPU选购指南:E3-1231 V3核显平替方案
  • Python 函数:告别复制粘贴,让你的代码学会“叠buff”
  • SolidWorks自学避坑指南与高效学习路线
  • 采购前软件衔接与程序切换问题判断参考
  • 移动端图标重构:SVG方案与性能优化实践
  • SteamVR Unity激光指针与移动系统开发指南
  • C#操作摇杆实战指南:从Win32 API到数据可视化
  • AI 写短剧总是不连贯?工具选择先看分集大纲能力
  • C++轻量级JSON库JsonBox:单文件集成与配置读写实战
  • C语言学习完整路线笔记:前置基础 + 全部数据类型详解