今天在一个网站上看到有个冒泡排序算法,最后的输出prinf输出函数如:
printf("%c",a[i],a[i]);
突然记得在什么地方看过一种说法,C语言的输出是从右到左的,但具体却很模糊,下班回来之后就试了一下,代码如下:
#include <stdio.h>
int main()
{
int b = 4;
printf("%d,%d",++b,b++);
printf("\n");
printf("%d",b);
printf("\n");
int a[3] = {1,2,3};
int i = 0;
printf("%d,%d",a[++i],a[++i]);
printf("\n");
printf("%d",i);
printf("\n");
return 0;
}
输出结果如下:

个人总结了下:
C语言的编译器以压栈式存储的,所以输出时是从栈顶往栈底读取数据的,但我们看到在用printf输出时,是从右往左进行的,而且每一项可以运算,但各项的运算结果互不影响,但对变量本身来说是每次计算都会改变它的值的。
冒泡算法中的交换数据的方法很经典,算法我也贴出来吧;
#include<stdio.h>
#define NUM 10
int main()
{
int a[NUM] = {35,32,43,55,66,123,33,44,65,76};
int i ,j;
for(i = 0; i < NUM; i++)
for(j = 0; j < NUM-1;j++)
if (a[j] > a[j+1])
{
a[j]^ = a[j+1];
a[j+1]^ = a[j];
a[j]^ = a[j+1];
}
for (i = 0; i < NUM; i++)
printf("%c",a[i],a[i]);
return 0;
}
本文详细解释了C语言中输出函数的特性,并通过冒泡排序算法实例展示了变量操作和输出的逻辑。文章深入探讨了栈的原理以及如何在实际编程中应用这些概念。

275

被折叠的 条评论
为什么被折叠?



