c++前面标识符已经声明后面依然显示未声明

练习冒泡排序

#include<iostream>
using namespace std;
int main() {
	int arr[9] = { 1,3,4,5,6,7,8,9,2 };
	cout << "数组为" << endl;
	for (int i = 0; i < 9; i++)
	{
		cout << arr[i];

	}cout << endl;
		//开始冒泡排序
		for (int i = 0; i < 8; i++)
		{
			for (int j = 0; j < 9 - i - 1;j++)
			{
				if (arr[j] > arr[j + 1])
					 int t = arr[j];//声明了t
					arr[j] = arr[j+1];
					arr[j + 1] =  t;//再次使用
			}
		}
	for(int i=0;i<9;i++)
	{
		cout << arr[i] ;
	}		cout << endl;

	return 0;
}

后面这个t再使用显示未声明ect13\Project13\源.cpp(19,20): error C2065: “t”: 未声明的标识符

求大神

把int t放到if和for外面试试?

if (arr[j] > arr[j + 1])
{
	int t = arr[j];//声明了t
	arr[j] = arr[j+1];
	arr[j + 1] =  t;
}

 

因为你if不加花括号的时候

只算if下面一行为if内的代码

if不加大括号的话只会算其中一行的代码。改正后:

#include<iostream>
using namespace std;
int main() {
	int arr[9] = { 1,3,4,5,6,7,8,9,2 };
	cout << "数组为" << endl;
	for (int i = 0; i < 9; i++)
	{
		cout << arr[i];

	}cout << endl;
		//开始冒泡排序
		for (int i = 0; i < 8; i++)
		{
			for (int j = 0; j < 9 - i - 1;j++)
			{
				if (arr[j] > arr[j + 1])
                {                    //
					 int t = arr[j];//声明了t
					arr[j] = arr[j+1];
					arr[j + 1] =  t;//再次使用
                }                    //
			}
		}
	for(int i=0;i<9;i++)
	{
		cout << arr[i] ;
	}		cout << endl;

	return 0;
}