转换;c99“;循环到常规的东西
故事:我尝试将c99脚本转换为常规gcc 问题:输出为空 预期输出:转换;c99“;循环到常规的东西,c,C,故事:我尝试将c99脚本转换为常规gcc 问题:输出为空 预期输出:3,2,1 length是数组中的元素数 更新:该脚本用于按降序对数组的元素进行排序 守则: #include <stdio.h> int main() { int arr[] = { 1,2,3 }; int temp = 0; int length = sizeof(arr) / sizeof(arr[0]); int i = 0; int j = i + 1;
3,2,1
length
是数组中的元素数
更新:该脚本用于按降序对数组的元素进行排序
守则:
#include <stdio.h>
int main() {
int arr[] = { 1,2,3 };
int temp = 0;
int length = sizeof(arr) / sizeof(arr[0]);
int i = 0;
int j = i + 1;
for (i < length; i++;) {
for (j < length; j++;) {
if (arr[i] < arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
int y = 0;
for (y < length; y++;) {
printf("%d ", arr[y]);
}
return 0;
}
#包括
int main(){
int arr[]={1,2,3};
内部温度=0;
int length=sizeof(arr)/sizeof(arr[0]);
int i=0;
int j=i+1;
对于(i
问题在于for循环的语法
下面是编写循环的正确方法
int i, j;
for (i = 0; i < length; ++i) // for (initialisation; test condition; operation)
{
for (j = i + 1; j < length; ++j) // note that j is initialized with i + 1 on each iteration of
// the outer loop. That's what makes the bubble sort work.
{
/* test and swap if needed */
}
}
for (i = 0; i < length; ++i) // note that i is reset to zero, so we can scan the array from
// a known position (the top) to bottom.
{
/* printout */
}
inti,j;
for(i=0;i
分号位置错误,请将其移到括号内最左边
循环语法为:
对于(初始化器;中断条件;迭代器)什么是“c99到常规内容”?我在这里没有看到任何特定于C99的内容。您的
for
-循环语法是错误的。您正在使用一个需要初始值设定项的条件,并在需要条件的地方递增;逻辑是错误的。这将编译,但不会达到您可能期望的效果。至少有三个关于无效代码的警告应该来自于此。如果没有发生这种情况,您需要打开警告并将其视为错误。您为(y,
很奇怪-您有一个条件,您应该进行初始化(或者什么都不做-因此测试根本不做)而y++
是测试条件,在第一次迭代时失败,因为y
在第一次迭代时为零或为假,并且是后增量。您的所有代码在C90下都是合法的,更不用说C99、C11或C18了(除非C90不支持自动数组初始化-我需要对此进行研究,我懒得这么做,因为这几乎与20年无关)。@JonathanLeffler您对常量的看法是对的,但指的是arr[0]
来自arr
的初始值设定项有一些有趣的问题: