방개
비밀번호를 잊어버리셨나요?

질문

if문 관련 질문 입니다

    • 글자 크기
a := 10

;첫번째

if a < 30
{

} 
if %a% < 30
{

}

;if문 변수 사용법에 대해 정확히 모르겠습니다 ㅠ 자세히 설명해 주실 수 있을까요??



;두번째
i := A_TickCount


if (i +1000 < a_tickcount)
{

}

if i + 1000 < a_tickcount
{

}

;스크립트의 일부분인데 괄호를 쓴건 작동하고 안쓴건 작동하지 않았습니다.if문에서 괄호는 언제 써야되나요? 



;세번째
var1 := 10
var2 := 5

if var1 < 20 && var2 < 10
{

}

if (var1 < 20) && (var2 <10)
{

}

if (var1 < 20 && var2 < 10)
{

}

;위 셋중 어떤게 맞는표현인가요?







도저히 모르겠습니다..

    • 글자 크기
댓글 4
  • 2020.3.31 02:52 댓글

    if문에는 전통식과 표현식이 있습니다.. 괄호를 쓰지 않고 표기하는 전통식, 그리고 괄호로 전체를 감싸는 방법이 표현식입니다.

     

    일반적으로 최근엔, 사실 최근도 아니지만 적어도 2010년대부턴, 아니 오토핫키를 제외한 모든 언어는 첫 출시때부터, 표현식이 더욱 권장되는 방식입니다. 즉, if문엔 괄호를 무조건 써주는것이 좋습니다.

     

    1. 여쭈신 부분은 '전통식' 표기인데요, 전통식에서 가운데에 있는 비교연산자 (질문에서는 "<"기호)를 기준으로, 왼쪽엔 '변수'자리, 오른쪽엔 '문자열'자리입니다. 즉, 왼쪽에 변수가 오면 % 표시를 안해줘도 되지만, 오른쪽에 변수가 오면 %표시를 반드시 해줘야합니다.

     

    즉, 변수끼리의 비교를 하려면 if a = %b% 라는 괴상한 식이 나오는 것이지요. 같은 '변수'인데, 한쪽은 그냥 쓰고 한쪽은 %표시를 해주니까요. 얼마나 일관성이 없습니까?

    이걸로 1번 질문의 답이 되었을겁니다.

     

    2번..또한 위에서 말한 전통식에서의 특징때문입니다. 비교 연산자를 기준으로, 오른쪽엔 변수임에도 불구하고 %기호를 써야한다고 말씀드렸습니다. 즉, A_TickCount가 변수라서.. %기호를 써주어야합니다.

     

    3번 질문..사실 셋 다 작동이 되는진 모르겠습니다. (저는 전통식을 안쓴지 좀 되어서요). 셋 다 작동이 된다는 가정하에, 마지막 방법이 제일 좋습니다.. ^^ 이유는.. 나머지 두개와 달리 '표현식'이기 때문이지요. 그걸로 충분합니다.

     

     

    세 질문 모두 전통식과 표현식을 모두 배우면서 고민할 수 있는 문제입니다.

    저는 그래서 오토핫키 강좌를 쓸때 사장된 문법(= 대입, if 전통식 등)을 '아예 알려드리지 않고' 강좌하나, 아직 많은 인터넷 오토핫키 강좌들이 이러한 옛 문법, 비권장 문법들을 이용하여 강좌하기 때문에 충분히 고민하실 수 있는 문제입니다.

     

    제가 드리는 제안으로는, "if 전통식"은 완전히 머릿속에서 잊어주세요. 즉, 작성자분은 이제부터, if를 쓰면 무조건 괄호를 열어주며, "모든 변수"엔 %처리를 하지 않고요, "문자열"엔 따옴표 표시를 해주시면 됩니다. 일관성있게 알자는 뜻입니다.

  • 프날님께
    asdf글쓴이
    2020.3.31 20:18 댓글

    변수 := 1

     

    if (0 < 변수 < 2 )

     

    if (0 < %변수% < 2)

     

    어떤게 맞는건가요?

     

    변수는 왼쪽 , 문자열은 오른쪽 이란게 잘 이해가 안됐습니다 ㅠㅠ

  • asdf님께
    2020.3.31 20:46 댓글

    둘 모두 안됩니다. And 연산자(&&)를 활용해서 쓰시면 되지요 그런 경우엔.. ^^

     

    사람은 a<b<c처럼 쓰면 알아보지만, 컴퓨터는 "비교 연산자를 중심으로 양 옆의 피연산자를 비교한다"밖에 못하니까요.

  • asdf님께
    2020.3.31 20:51 댓글

    추가로... 변수는 왼쪽, 문자열은 오른쪽이라는 말은 "전통식"기준입니다. 전통식은 완전히 잊어버리세요.

     

    깔끔하게 잊으시고, 우리는 if문 사용법을 아래와 같이 알고있으면 됩니다.

     

    1. if문을 쓸 땐 괄호를 무조건 열어준다.
    2. 괄호 안에서, (변)수는 무조건! 그냥 써주고, 문자열은 "이렇게 따옴표" 표시를 해줍니다.

     

    ;예1
    if (var1 = var2)
    
    ;예2
    if (var1 = 2)
    
    ;예3
    if (var1 = "문자열1")
    
    ;예4
    if ("문자열1" = "문자열2") ;이건 if문의 의미가 없긴 한데, 문법상으론 틀리지 않았습니다.
    
    ;예5
    if (1 = 2) ;이건 if문의 의미가 없긴 한데, 문법상으론 틀리지 않았습니다.
    
    ;예6
    if (var1 < 2 && var2 = "문자열")
    
    ;예7
    if ((var1 = "문자열1" && var2 = "문자열2") || var3 = 123)

     

댓글 달기

서버에 요청 중입니다. 잠시만 기다려 주십시오...