C语言 printf 执行顺序

简介: C语言 printf 执行顺序

先看几个例子


#include <stdio.h>

int main()
{
    unsigned a = 16;
    printf("%d,%d,%d", a >> 2, a = a >> 2, a);
    return 0;
}

1,4,4

#include <stdio.h>

int main()
{
    unsigned a = 16;
    printf("%d", a >> 2);
    return 0;
}

4

  • 说明即使后续的运算,将会影响前面的输出

实验

#include <stdio.h>

int main(){
    int b = 2;
    printf("%d,%d", b, b = b + 2);
    return 0;
}

4,4

  • 与预想的一样,输出了4,4
#include <stdio.h>

int main(){
    int b = 2;
    printf("%d,%d,%d", b, b = b + 2, b + 3);
    return 0;
}

4,4,5

#include <stdio.h>

int main()
{
    int b = 2;
    // printf("%d,%d,%d,%d,%d\n", b, b = b + 2, b + 3, b = b + 3, b = b + 1);
    printf("%d,%d,%d,%d\n", b, b = b * 2, b + 3, b = b + 2);
    return 0;
}

8,8,7,8


结论


printf函数中,参数从后往前执行, 赋值语句会改变之前赋值过的值 , 所有带有赋值语句的值相同


例: printf("%d,%d,%d,%d\n", b, b = b * 2, b + 3, b = b + 2);


一个四个打印的参数 , 其中两个带有赋值语句


第二个 b = b * 2 , 第四个b = b+2


从后往前执行:


  • b = b + 2 => b ==4 ==> b 打印变量 b
  • b + 3 => 4+3=7 ==> 7 打印常量 7
  • b = b * 2 => b = 4*2==8 ==> b 打印变量 b 此处将前面的变量b 也改变为8了
  • b => b ==> b 打印变量 b
  • 变量b的值将会统一, 最后一起打印显示数据: 8,8,7,8
相关文章
|
6月前
13.C语言:用printf函数输出数据
13.C语言:用printf函数输出数据
101 0
|
3月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
1月前
|
C语言
初识C语言:与计算机的交流之输入与输出(scanf和printf)
初识C语言:与计算机的交流之输入与输出(scanf和printf)
163 0
|
2月前
|
存储 C语言 数据格式
【C语言基础考研向】03混合运算和printf讲解
本文分为两部分。第一部分介绍了C语言中的混合运算与类型强制转换的重要性,通过实例展示了当整型数进行除法运算且结果为小数时,必须使用类型转换才能正确存储浮点数结果。第二部分详细讲解了`printf`函数的功能与使用方法,包括格式化输出不同类型数据的基本语法,并通过具体示例演示了如何利用字段宽度和对齐方式来控制输出格式,帮助读者更好地理解和掌握输出格式的控制技巧。
46 10
|
2月前
|
C语言
C语言程序设计核心详解 第三章:顺序结构,printf(),scanf()详解
本章介绍顺序结构的基本框架及C语言的标准输入输出。程序从`main()`开始依次执行,框架包括输入、计算和输出三部分。重点讲解了`printf()`与`scanf()`函数:`printf()`用于格式化输出,支持多种占位符;`scanf()`用于格式化输入,需注意普通字符与占位符的区别。此外还介绍了`putchar()`和`getchar()`函数,分别用于输出和接收单个字符。
|
3月前
|
存储 缓存 编译器
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(下篇)
scanf处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存进⾏解读。 解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌。
160 2
|
3月前
|
存储 C语言
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(上篇)
printf 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以定制输出⽂本的格式。
75 1
|
6月前
|
存储 缓存 编译器
C语言第四弹---printf和scanf详解
C语言第四弹---printf和scanf详解
|
5月前
|
存储 C语言
C语言中的printf函数详解
C语言中的printf函数详解
134 0
|
5月前
|
C语言 C++
C语言printf()函数详解
C语言printf()函数详解