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++这种先使用在变化的量则优先输出。
参考:

相关推荐
邹诗钰-电子信息工程4 小时前
嵌入式自学第二十二天(5.15)
c语言
范纹杉想快点毕业7 小时前
以项目的方式学QT开发(一)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
c语言·数据结构·c++·git·qt·链表·github
xueyinan7 小时前
小刚说C语言刷题—1088求两个数M和N的最大公约数
c语言
王RuaRua9 小时前
[数据结构]7. 堆-Heap
c语言·数据结构·算法·链表
似水এ᭄往昔11 小时前
【数据结构】——队列
c语言·数据结构·c++·链表
水水沝淼㵘11 小时前
嵌入式开发学习日志(数据结构--双链表)Day21
c语言·数据结构·学习·算法·排序算法
czxyvX12 小时前
023-C语言预处理详解
c语言
夜晚中的人海13 小时前
【C语言】初阶数据结构相关习题(二)
c语言·开发语言·数据结构
范纹杉想快点毕业15 小时前
以项目的方式学QT开发(三)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
c语言·开发语言·c++·qt·mysql·算法·命令模式
敲代码的瓦龙15 小时前
STL?list!!!
c语言·开发语言·数据结构·c++·windows·list