jtwc 发表于 2022-2-14 21:22

各位老师,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: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;         
                  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);

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;   ...

double a2这个才是a2
你在外面定义数组char a和这个a2没关系啊,要用数组的话也是写成a
你这基础不牢固啊

一件事,俩个人 发表于 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
                        }

一件事,俩个人 发表于 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

谢谢各位老师,已解决
页: [1] 2
查看完整版本: 各位老师,c语言中if内的变量a2=21,if外a2=0呢?