program story

캐스팅하지 않고 짧은 int 리터럴을 지정하는 방법은 무엇입니까?

inputbox 2020. 11. 7. 09:29
반응형

캐스팅하지 않고 짧은 int 리터럴을 지정하는 방법은 무엇입니까?


내 변수가 짧은 정수임을 지정하는 방법이 있습니까? 소수에 대한 M 접미사와 비슷한 것을 찾고 있습니다. 소수의 경우 말할 필요가 없습니다.

var d = (decimal)1.23;

다음과 같이 작성할 수 있습니다.

var d = 1.23M;

이것을 쓰는 방법이 있습니까

   var s  = SomeLiteralWithoutCast

그래서 s는 짧은 int라는 것을 암시합니까?


짧은 대답, 아니요 . C #에서는 유형 이임을 나타내는 문자 S를 사용할 수 없습니다 . 거기 에 대한 , 대한 , 대한 , 대한 , 하지만 . 있었다면 좋을 텐데 없어.var a = 123SashortLlongFfloatDdoubleMdecimalS

var a = 1M;  // decimal
var a = 1L;  // long
var a = 1F;  // float
var a = 1D;  // double
var a = 1;   // int

var a = 1U;  // uint
var a = 1UL; // ulong

하지만

var a = 1S; // not possible, you must use (short)1;

질문은 약간 혼란 스럽습니다. 몇 가지 용어를 정의 해 보겠습니다.

상수 식은 특정 상수 값으로 컴파일러에게 공지 식을 (대충 말하자면)된다.

리터럴 상수 식의 특별한 종류이다; 123그리고 Math.PI두 상수 식입니다. 전자는 문자 그대로이고 후자는 그렇지 않습니다.

상수 필드는 상수 식으로 초기화 형태의 부재이고, 그 다음 다른 일정한 표현으로서 사용될 수있다. Math.PI상수 필드의 예입니다.

로컬 정수 상수 필드 같지만 블록으로 범위. (지역 변수가 블록으로 범위가 지정되는 것과 같습니다.)

유형을 명시 적으로 나타내려면 상수 필드와 로컬 상수가 필요합니다. 상수에 대한 "var"형식은 없습니다. (이 아이디어는 사람을 떨게합니다. "const var"는 분명히 모순입니다.)

지역 변수는 유형을 표시하는 데 필요하지 않습니다. 이니셜 라이저에서 유형을 유추 할 수 있습니다. 이러한 지역 변수를 "암시 적으로 형식화 된 지역 변수"라고합니다.

따라서 귀하의 질문은 "짧은 유형의 암시 적으로 유형화 된 지역 변수를 초기화하는 데 사용할 수있는 short 유형의 리터럴 상수 표현식을 작성하는 방법이 있습니까?"입니다.

아니 없어. 로컬 변수를 명시 적으로 입력 할 수 있습니다.

short s1 = 123;

로컬 상수를 명시 적으로 입력 할 수 있습니다.

const short s2 = 123;

또는 짧게 캐스트를 포함하는 상수 표현식을 만들 수 있습니다.

var s3 = (short)123;

또는 로컬 또는 필드 상수를 만들고 암시 적으로 형식화 된 로컬의 이니셜 라이저에 해당 이름을 사용할 수 있습니다.

var s4 = s2;

그러나 주위에는 방법이 없습니다. 필드 나 지역 선언 또는 캐스트에서 어딘가에short 나타나야 합니다.


shortC # 에는 데이터 형식에 대한 접미사가 없습니다 . 정수 리터럴을 짧게하려면 유형을 명시 적으로 지정하고 범위 내에있는 리터럴을 제공해야합니다.

short s = 123;

두 가지 옵션; 이상적이지 않음 :

  1. var유형을 명시 적으로 지정하여를 제거하십시오 .

    short s = 123;
    
  2. 캐스트 구문을 사용합니다 (이 작업은 런타임이 아니라 컴파일 타임 작업입니다).

    var s = (short)123;
    

이것이 리터럴 short를 지정하는 유일한 옵션입니다.


다음을 사용할 수 있습니다.

var value = (short)123;

물론 var의 요점은 유형을 작성하는 것이 아니기 때문에 실제로 의미가 없습니다.


그런 것은 없으므로 Implicitly constconst를 다음과 같이 짧게 정의해야합니다.

const short x = 999;

여기에서 더보기

참고URL : https://stackoverflow.com/questions/8670511/how-to-specify-a-short-int-literal-without-casting

반응형