C语言初学习——易错点合集(持续更新中)

转义字符

例题一

复制代码
int main()
{
    char s[] = "012xy\08s34f4w2";
    int i, n = 0;
    for (i = 0; s[i] != 0; i++)
    {
        if (s[i] >= '0' && s[i] <= '9')
        {
            n++;
        }
    }
    printf("n=%d\n", n);
}

输出:


n=3


例题二

复制代码
int main()
{
    char s[] = "\01234";
    for (int i = 0; s[i]; i++)
    {
        printf("1");
        printf("%c\n", s[i]);
    }
}

输出:


1

13

14


总结:

八进制值的判断取决于后续是否为合法的八进制。

以\开始,最少1位,最多3位,且必须是合法的8进制数字,即0~7,如"\012"。

例:在"\08"中,'\0'为结束符。

自增与自减

例题一

复制代码
int main()
{
    int k = 5;
    while (k--)
    {
        printf("%d", k -= 3);
    }
}

输出:


死循环


总结:

自增与自减的先运算再赋值也同样应用在循环体里

例题二

复制代码
int main()
{
    int a = 0;
    printf("%d %d %d %d", ++a, a, a++, ++a, a);
}

输出:


3 3 1 3


总结:

在C语言中有个很常用的函数printf,使用时从右向左压栈,依次从右向左开始计算,计算完后才会往%d中输出,因为有多条赋值语句,所以它是个累加过程,直到压栈结束后输出最终得累加值,而遇到a++这种先使用在变化的量则优先输出。
参考:

相关推荐
LONGZETECH34 分钟前
新能源技术实训难题破解:纯电动汽车五大核心系统三维仿真解决方案
大数据·c语言·人工智能·安全·汽车
知识分享小能手2 小时前
C学习教程,从入门到精通,C语言输入和输出(4)
c语言·开发语言·学习
沐晓时光12 小时前
C语言入门,深入理解指针(3)
c语言·开发语言
SuperByteMaster14 小时前
wfi进入之前没有清除basepri, 导致中断优先级不够,wfi 退不出来
c语言
Navigator_Z14 小时前
LeetCode //C - 1286. Iterator for Combination
c语言·算法·leetcode
奋斗的阿狸_198617 小时前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发
2401_8628808217 小时前
iMX6ULL 驱动工程搭建 + LED 灯驱动
c语言·驱动开发·嵌入式硬件
ACP广源盛1392462567317 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
沐欣工作室_lvyiyi17 小时前
超市智能货架系统设计与实现(论文+源码)
c语言·单片机·课程设计·电子信息工程毕业设计·黑龙江工商学院·广州工商学院·成都工业学院
C++ 老炮儿的技术栈18 小时前
static的作用
c语言·c++·人工智能·单片机·c