各位老师,c语言中if内的变量a2=21,if外a2=0呢?
本帖最后由 jtwc 于 2022-2-14 21:23 编辑各位老师,c语言中if内的变量a2=21正确,if外a2=0不正确呢?谢谢了,案例如下
char *t;
int j = 1;
//将换行符替换为分割文本的制表符
for (int i = 0; i < 1024; i++)
{
if (Result == '\r' && Result == '\n')
{
Result = '\t';
Result = '\t';
}
}
t = strtok(Result, "\t");
while (t)
{
t = strtok(NULL, "\t");
j++;
if (j == 72 && t != NULL)
{
// 将字符t写入数组a
char a;
sprintf(a, "%s\n", t);
std::string a1 = a;//将数组a转为string a1
double a2 = std::stod(a1);//将string a1转为double a2
printf("最大:%.2f\n", a2);
}
printf("最大:%.2f\n", a2); 本帖最后由 幽溪左畔 于 2022-2-14 21:39 编辑
if 内 定义a2 为局部变量
(话说这样真的不会报变量未定义error吗) 就如同你的上个问题一样,变量都有作用域,你这在if内定义的a2,超出了if范围就释放了,如果想要在if范围外调用a2,你就要在外面先定义a2 深夜雪 发表于 2022-2-14 21:38
就如同你的上个问题一样,变量都有作用域,你这在if内定义的a2,超出了if范围就释放了,如果想要在if范围外 ...
老师,在外面先定义a2,if内外a2=0全不正确了呢?谢谢了,案例如下
char a;
char *t;
int j = 1;
//将换行符替换为分割文本的制表符
for (int i = 0; i < 1024; i++)
{
if (Result == '\r' && Result == '\n')
{
Result = '\t';
Result = '\t';
}
}
t = strtok(Result, "\t");
while (t)
{
t = strtok(NULL, "\t");
j++;
if (j == 72 && t != NULL)
{
// 将字符t写入数组a
sprintf(a, "%s\n", t);
std::string a1 = a;//将数组a转为string a1
double a2 = std::stod(a1);//将string a1转为double a2
printf("最大:%.2f\n", a2);
}
printf("最大:%.2f\n", a2); double a2.. 这才是a2 jtwc 发表于 2022-2-14 21:52
老师,在外面先定义a2,if内外a2=0全不正确了呢?谢谢了,案例如下
char a; ...
double a2这个才是a2
你在外面定义数组char a和这个a2没关系啊,要用数组的话也是写成a
你这基础不牢固啊 A2只在这里面有作用
while (t)
{
t = strtok(NULL, "\t");
j++;
if (j == 72 && t != NULL)
{
// 将字符t写入数组a
sprintf(a, "%s\n", t);
std::string a1 = a;//将数组a转为string a1
double a2 = std::stod(a1);//将string a1转为double a2
printf("最大:%.2f\n", a2);
}
如果你想外部调用可在外面声明A2或者在最后的时候用一个外部的变量去存储后读取,比如:
double temp;
while (t)
{
t = strtok(NULL, "\t");
j++;
if (j == 72 && t != NULL)
{
// 将字符t写入数组a
sprintf(a, "%s\n", t);
std::string a1 = a;//将数组a转为string a1
double a2 = std::stod(a1);//将string a1转为double a2
printf("最大:%.2f\n", a2);
temp = a2
} 幽溪左畔 发表于 2022-2-14 21:37
if 内 定义a2 为局部变量
(话说这样真的不会报变量未定义error吗)
我感觉会 我猜一下:在while外面定义a2,把里面的定义删了,应该可以达到你想要的效果 谢谢各位老师,已解决
页:
[1]
2