C++ 用于输出循环的(c+;+;)循环

C++ 用于输出循环的(c+;+;)循环,c++,for-loop,C++,For Loop,给定基数和指数,计算“高指数基数”。这是基础 指数是整数值。使用“for” 输入:基数,指数 输出:高指数基 #include <iostream> #include <stdlib.h> #include <cmath> // Libreria necessaria per la funzione pow using namespace std; int main(int argc, char *argv[]) { // Variabili int b

给定基数和指数,计算“高指数基数”。这是基础 指数是整数值。使用“for” 输入:基数,指数 输出:高指数基

#include <iostream>
#include <stdlib.h>
#include <cmath> // Libreria necessaria per la funzione pow

using namespace std;

int main(int argc, char *argv[])
{
// Variabili 
int base, esponente, elevazione,n;

cout<<"Inserisci la base:";
cin>>base;
cout<<"Inserisci l'esponente:";
cin>>esponente;

for(int i=0;i<n;i++)
{
elevazione=pow(base,esponente);
cout<<"Il risultato è:"<<elevazione;
}
system("PAUSE");    
return 0;
}
#包括
#包括
#包括//Libreria necessaria per la funzione pow
使用名称空间std;
int main(int argc,char*argv[])
{
//易变
内特基地,埃波尼特,拉维齐昂,n;
coutbase;
库特斯邦特;

对于(int i=0;i您没有初始化
n
变量。这样,它可以采用任何值(比如1254445588)。因此,您正在打印n次相同的“Il risultatoè…”

如果需要使用循环,正确的解决方案是:

int result = 1;

for (int i = 0; i < esponente; i++)
{
    result *= base;
}

std::cout << "Il risultato è: " << result << std::endl;
int结果=1;
for(int i=0;i你为什么有一个循环?它的目的是什么?你在循环条件中使用
n
,而不初始化它,这意味着它的值是不确定的,你将有未定义的行为。你想知道你怎么不能写for循环吗?不清楚你在问什么我猜你的任务是要求你计算使用循环手动消耗电源,而不使用使用
pow
的循环(并以未定义的次数打印相同的结果;)“它可以采用任何值”有点误导。编译器实际上假设的是未定义的行为永远不会发生,因此,如果存在未定义的行为,编译器可以自由地做任何想做的事情(包括但不限于为
n
选择任何值)@tobi303您能解释一下“未定义的行为永远不会发生”吗如果每个代码都有一个不正确的行为,那么它不是一个有效的C++程序,所以任何编译器都可以假设在一个有效的C++程序中没有未定义的行为。好的,但是n的值不是由编译器设置的,不是吗?编译器把存储在栈的位置的值引用到n,这是不可预测。如果我说的是真的,我仍然无法理解“为n选择任何值”这是未定义的行为,因为
n
是未初始化使用的。严格来说,这是关于代码的所有可以确定的。不能以有意义的方式对包含ub的代码进行推理,因为一旦打破规则,就不再有任何规则。假设
n
将有一个值存储在
n
引用的堆栈充其量是危险的。您可以进行实验并尝试查看特定编译器在这种情况下会做什么,但这没有什么可依赖的,因为它可能随时发生变化