programing

if-statement 내부에 변수 값 할당

minecode 2023. 1. 24. 08:17
반응형

if-statement 내부에 변수 값 할당

다음과 같이 조건부 연산자 내부에 변수를 할당할 수 있는지 궁금합니다.

if((int v = someMethod()) != 0) return v;

자바에서 이걸 할 수 있는 방법이 있나요?왜냐면 난 그게 가능하단걸 알고있거든while조건들이지만, 만약을 위해 잘못하고 있는 건지, 그게 불가능한 건지 모르겠어요.

변수를 할당할 수 있지만 조건문 내에서 선언할 수는 없습니다.

int v;
if((v = someMethod()) != 0) return true;

내부에는 할당할 수 있지만 선언할 는 없습니다.if:

이것을 시험해 보세요.

int v; // separate declaration
if((v = someMethod()) != 0) return true;

할당은 할당의 왼쪽을 반환합니다.그래서: 네, 가능합니다.단, 변수를 outside로 선언해야 합니다.

int v = 1;
if((v = someMethod()) != 0) {
    System.err.println(v);
}

예, 다음과 같은 경우 내부 변수 값을 할당할 수 있습니다.

나는 그것을 추천하지 않을 것이다.문제는 값을 비교하려고 하지만 단일 값을 사용하는 일반적인 오류처럼 보인다는 것입니다.=대신==또는===.

다음과 같은 작업을 수행하는 것이 좋습니다.

int v;
if((v = someMethod()) != 0) 
   return true;

당신의 문제는 테스트 내에서 변수 v를 정의하고 있기 때문이라고 생각합니다.@rmalchow에서 설명한 바와 같이, 이 기능을 사용하면,

int v;
if((v = someMethod()) != 0) return true;

가변 범위라는 또 다른 문제도 있다.만약 당신이 노력한 것이 효과가 있다고 해도, 무슨 의미가 있을까요?테스트 내에서 변수 범위를 정의할 수 있다고 가정하면 변수 v는 해당 범위 밖에 존재하지 않습니다.따라서 변수를 만들고 값을 할당하는 것은 사용할 수 없기 때문에 의미가 없습니다.

변수는 생성된 범위에만 존재합니다.나중에 사용할 값을 할당하므로 필요한 경우 사용할 수 있도록 변수를 작성하는 범위를 고려하십시오.

네, 가능합니다.다음 코드를 고려하십시오.

public class Test  
{        
    public static void main (String[] args)       
    {       
        int v = 0;          
        if ((v=dostuff())!=0)            
        {          
            System.out.printf("HOWDY\n");          
        }             
    }                
    public static int dostuff()       
    {             
        //dosomething              
        return 1; 
    }       
}          

이것으로 당신의 질문이 충족되기를 바랍니다.

내부 변수를 할당할 수 있습니다.if스테이트먼트, 단, 먼저 선언해야 합니다.

네, 조건부 확인의 경우 내부 지정이 가능합니다.단, 변수는 이미 무언가를 할당하도록 선언되어 있어야 합니다.

왜냐하면 조건상 가능한 건 알지만, 내가 만약을 위해 잘못하고 있는 건지, 그게 불가능한 건지 모르겠어.

힌트: 조건의 종류와 조건은 무엇입니까?

while로 실행할 수 있는 경우 둘 다 부울 조건을 예상하기 때문에 if 문을 weel로 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/16148580/assign-variable-value-inside-if-statement

반응형