两个变量一个名字但能编译通过(建议此题通过了再看)

P1618 三连击(升级版)

RiGuang @ 2024-12-08 15:27:26

为什么不给我报编译错误?(当然,此代码最终AC不了)

#include<bits/stdc++.h>
using namespace std;

int main(){
    long long A,B,C,c=0;cin>>A>>B>>C;//这里的c打算是计数用的
    int arr[9]={1,2,3,4,5,6,7,8,9};
    do{
        int a=arr[0]*100+arr[1]*10+arr[2];
        int b=arr[3]*100+arr[4]*10+arr[5];
        int c=arr[6]*100+arr[7]*10+arr[8];//这里的c指的是第三个三位数
        if(a*B==b*A&&a*C==c*A&&a*B==b*A){
            cout<<a<<" "<<b<<" "<<c<<endl;
            c++;
        }

    }
    while(next_permutation(arr,arr+9));
    if(c==0)cout<<"No!!!";

    return 0;
}

by I_Love_DS @ 2024-12-08 15:30:01

@RiGuang

不放在一层下是根据就近原则的(具体原理不知道)


by ywrow @ 2024-12-08 15:30:06

你的两个变量作用域不一样


by RiGuang @ 2024-12-08 15:32:30

明白了,感谢!!


by RiGuang @ 2024-12-08 15:37:04

我在Java也这样搞作用域内外都有同名变量却没通过编译,怪不得感觉有点奇怪


|