함수의 기본 반환 변수는 항상 할당됩니까?

Miroxlav

함수와 동일한 이름의 기본 변수가 구현되는 방법에 관심이 있습니다.

  • 되어 Sum항상 내가 그것을 사용하고 있지 않다하더라도 할당? (참조 case 1)
  • 다른 변수 ( Totalin CASE 3)를 선택하면 대신 사용 Sum됩니까?

다음 3 개의 동등한 경우도 컴파일 할 때 동일합니까? 아니면 어떤 것은 다른 것보다 우월합니까?

' EQUIVALENT CASES

' CASE 1
Function Sum(a As Integer, b As Integer) As Integer
    Return a + b
End Function

' CASE 2
Function Sum(a As Integer, b As Integer) As Integer
    Sum = a + b
End Function

' CASE 3
Function Sum(a As Integer, b As Integer) As Integer
    Dim Total As Integer
    Total = a + b
    Return Total
End Function

어딘가에서 읽을 때 32 바이트 미만으로 컴파일하는 함수가 인라인으로 삽입됩니다. 어떤 경우에는 선택한 표기법 때문에 한계를 초과하거나 미만으로 끝날 수 있는지 궁금합니다.

크리스 더너웨이

함수의 이름을 Sum1, Sum2 및 Sum3으로 각각 변경 한 다음 LinqPad를 통해 실행했습니다. 생성 된 IL은 다음과 같습니다.

Sum1:
IL_0000:  ldarg.1     
IL_0001:  ldarg.2     
IL_0002:  add.ovf     
IL_0003:  ret         

Sum2:
IL_0000:  ldarg.1     
IL_0001:  ldarg.2     
IL_0002:  add.ovf     
IL_0003:  stloc.0     // Sum2
IL_0004:  ldloc.0     // Sum2
IL_0005:  ret         

Sum3:
IL_0000:  ldarg.1     
IL_0001:  ldarg.2     
IL_0002:  add.ovf     
IL_0003:  stloc.1     // Total
IL_0004:  ldloc.1     // Total
IL_0005:  ret         

Sum2와 Sum3이 동일한 IL을 생성하는 것으로 보입니다. Sum1은 연산자의 결과를 스택에 직접 배치하므로 더 효율적으로 보입니다. 다른 사람들은 결과를 스택에서 로컬 변수로 가져온 다음 스택으로 다시 밀어 넣어야합니다!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

변수 할당의 반환 상태는 어떻게 결정됩니까?

반환 값이 변수에 할당될 때 항상 복사본이 만들어집니까?

pytest 조명기는 항상 함수를 반환합니다.

할당의 오른쪽 피연산자는 항상 rvalue로 변환됩니까?

내 변수는 항상 정의되지 않고 쿼리를 기다리기 전에 함수가 반환됩니다.

Haskell의 함수는 항상 반환 값을 평가합니까?

변수는 함수에서 항상 기본값으로 재설정됩니다.

Redux의 "Reducer"는 기본적으로 초기 상태와 기본값을 반환 할 수 있습니까?

Promise 또는 Observable을 반환하지 않는 함수가 JavaScript의 동기 함수라고 항상 가정 할 수 있습니까?

함수는 항상 의미없는 값을 반환합니다.

항상 0을 반환하는 double 변수의 나누기

순수 가상 기능에 기본 기능이 할당됩니까?

SFML의 '교차'함수는 항상 'true'를 반환합니다.

FFmpeg의 "showpalette"필터는 항상 기본 팔레트를 반환합니다.

for 루프의 변수는 항상 0을 반환합니다.

함수의 함수는 항상 0-R을 반환합니다.

Jquery 함수는 항상 두 번째 매개 변수의 개수 0을 반환합니다.

포트란 함수는 항상 반환 값의 결과를 허용 변수에 복사합니까?

매개 변수의 기본값을 함수의 반환으로 설정할 수 있습니까? (TCL)

Dart 함수의 기본 반환 값은 무엇입니까

brightscript 함수의 기본 반환 동작은 무엇입니까?

React Native의 변수에 비동기 함수 반환을 할당하는 방법

비동기 함수는 항상 정의되지 않은 것을 반환합니다.

Twilio 함수의 /else 문은 항상 false를 반환합니다.

기본 함수가 자동을 반환 할 수 있습니까?

함수에 할당 된 메모리는 함수가 반환 된 후에도 할당 된 상태로 유지됩니까?

내 sharedPreference는 항상 기본값을 반환합니다.

node-config는 항상 기본 설정을 반환합니다.

getPreferences는 항상 기본값을 반환합니다.

TOP 리스트

  1. 1

    C # 16 진수 값 0x12는 잘못된 문자입니다.

  2. 2

    Matlab의 반복 Sortino 비율

  3. 3

    Python의 csv 파일에서 첫 번째 열 삭제

  4. 4

    개체 참조가 개체의 인스턴스로 설정되지 않았습니까? (예외 오류 ~ ASP.NET MVC)

  5. 5

    atob은 인코딩 된 base64 문자열을 디코딩하지 않습니다.

  6. 6

    EventEmitter <string>의 컨텍스트 'this'가 Observable <string> 유형의 'this'메서드에 할당되지 않았습니다.

  7. 7

    병합 셀을 사용하여 워크 시트의 데이터 필터링

  8. 8

    PhpStorm 중단 점에서 변수 값을 볼 수 없습니다.

  9. 9

    jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법은 무엇입니까?

  10. 10

    `@ Transactional`이 있음에도 불구하고 이러한 데이터베이스 수정 사항이 롤백되지 않는 이유는 무엇입니까?

  11. 11

    ssh를 사용하여 원격에서 로컬로 파일 복사

  12. 12

    종속 사용자 정의 Lightning 선택 목록 Level2 및 Level3을 설정한 다음 Lightning 구성 요소에서 Level2를 재설정하지만 Level2 캐시 데이터가 저장됨

  13. 13

    2 개의 이미지를 단일 평면 이미지로 결합

  14. 14

    팝업처럼 위젯을 표시하는 방법

  15. 15

    [해결] 쿠키 설정 SameSite = Chrome / JSP, JAVASCRIPT에서 작동하지 않습니다.

  16. 16

    버튼 클릭을 기반으로 특정 CSS 클래스를 추가하는 방법은 무엇입니까?

  17. 17

    React 구성 요소가 자동으로 초기 상태로 다시 렌더링됩니다.

  18. 18

    연결된 서버 쿼리는 작동하지만 동일한 OPENQUERY는 "sys.servers에서 서버 'SERVER'를 찾을 수 없습니다.

  19. 19

    파일 2의 파일 1에서 동일한 줄을 조건으로 바꿉니다.

  20. 20

    아이디어 Intellij : 종속성 org.json : json : 20180813을 찾을 수 없음, maven에서 org.json 라이브러리를 가져올 수 없음

  21. 21

    상황에 맞는 메뉴 색상

뜨겁다태그

보관