吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1144|回复: 10
收起左侧

[求助] 各位老师,c语言中if内的变量a2=21,if外a2=0呢?

[复制链接]
jtwc 发表于 2022-2-14 21:22
本帖最后由 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[i + 1] == '\n')
                        {
                                Result = '\t';
                                Result[i + 1] = '\t';
                        }
                }

                t = strtok(Result, "\t");
                while (t)
                {
                        t = strtok(NULL, "\t");
                        j++;
                        if (j == 72 && t != NULL)
                        {
                                // 将字符t写入数组a
                                 char a[10];
                                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:37
本帖最后由 幽溪左畔 于 2022-2-14 21:39 编辑

if 内 定义a2 为局部变量
(话说这样真的不会报变量未定义error吗)
深夜雪 发表于 2022-2-14 21:38
就如同你的上个问题一样,变量都有作用域,你这在if内定义的a2,超出了if范围就释放了,如果想要在if范围外调用a2,你就要在外面先定义a2
 楼主| jtwc 发表于 2022-2-14 21:52
深夜雪 发表于 2022-2-14 21:38
就如同你的上个问题一样,变量都有作用域,你这在if内定义的a2,超出了if范围就释放了,如果想要在if范围外 ...

老师,在外面先定义a2,if内外a2=0全不正确了呢?谢谢了,案例如下
                   char a[10];           
                    char *t;
                        int j = 1;
                //将换行符替换为分割文本的制表符
                for (int i = 0; i < 1024; i++)
                {
                        if (Result == '\r' && Result[i + 1] == '\n')
                        {
                                Result = '\t';
                                Result[i + 1] = '\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);
Pierce 发表于 2022-2-14 22:10
double a2  .. 这才是a2
深夜雪 发表于 2022-2-14 22:44
jtwc 发表于 2022-2-14 21:52
老师,在外面先定义a2,if内外a2=0全不正确了呢?谢谢了,案例如下
                   char a[10];     ...

double a2  这个才是a2
你在外面定义数组char a[10]和这个a2没关系啊,要用数组的话也是写成a[2]
你这基础不牢固啊
一件事,俩个人 发表于 2022-2-15 00:36
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
                        }

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
jtwc + 1 + 1 我很赞同!

查看全部评分

一件事,俩个人 发表于 2022-2-15 00:48
幽溪左畔 发表于 2022-2-14 21:37
if 内 定义a2 为局部变量
(话说这样真的不会报变量未定义error吗)

我感觉会
小小娃娃 发表于 2022-2-15 10:01
我猜一下:在while外面定义a2,把里面的定义删了,应该可以达到你想要的效果
 楼主| jtwc 发表于 2022-2-15 17:42
谢谢各位老师,已解决
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表