숫자 포맷 long long 형에 대해서 질문 있어요

dinytaiji의 이미지

다름이 아니라 제가 윈도우와 리눅스에 호환되는 서버를 개발중인데요..
문제가 long long에 해당되는 숫자가 리눅스에서는 에러를 내더군요..
그래서 확인해 보니 뒤에 LL을 붙이면 되더라구요..
예를 들어 20000000000000000LL 이런식으로 요..
헌데 넘 불편한 점이 많아서..
이걸 안넣고도 컴파일타임에 에러를 안내게 하는 방법은 없나요??
^^ 한수 갈카 주세요..

익명 사용자의 이미지

에러가 아니라 경고메시지 아닌가요? 자동으로 적절한 타입이 선택이 될텐데요.

chadr의 이미지

기본적으로 컴파일러는 상수뒤에 아무런 식별자를 쓰지 않으면 int형으로 인식하는 것으로 알고 있습니다.

따라서 20000000000000000라는 숫자 뒤에 ll을 붙이지 않으면 int로 인식해서 오버플로 되는 값은 버려지게 될겁니다.

윈도에서는 에러나고 리눅스에서는 에러가 안나는건 이 오버플로되는 값이 있을때 vc 에서는 그냥그냥 넘어가지만 gcc에서는 이걸 인식하고 사용자에게 잠재적 "위험"이 있다는것을 알려주는 것입니다. 그런다고 vc가 만들어내는 코드가 정상적인 것이라고는 단정 할수 없습니다.. 잠재적인 위험이 있는 것이죠.

불편하시더라도 컴파일러 입장에서는 가능한 자세한것이 정확한 코드를 만들어내는데 편하기 때문에 써주시는것이 좋습니다..

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

doldori의 이미지

chadr wrote:
기본적으로 컴파일러는 상수뒤에 아무런 식별자를 쓰지 않으면 int형으로 인식하는 것으로 알고 있습니다.

따라서 20000000000000000라는 숫자 뒤에 ll을 붙이지 않으면 int로 인식해서 오버플로 되는 값은 버려지게 될겁니다.


그렇지 않습니다. C99를 따르는 컴파일러라면 전혀 문제 없습니다.
http://bbs.kldp.org/viewtopic.php?p=272667&highlight=#272667

C99를 지원하지 않는 VC++에서 문제가 없는 이유는 확장 기능으로서 제공하기
때문인 것 같습니다.

chadr wrote:
불편하시더라도 컴파일러 입장에서는 가능한 자세한것이 정확한 코드를 만들어내는데 편하기 때문에 써주시는것이 좋습니다..

이 말씀에 대해서는 동의합니다.

OP의 질문에 대해서: LL을 붙이지 않아도 적법한 코드입니다만, 현재 양쪽 환경에서
모두 동작하도록 하는 현실적인 방법을 LL을 붙이는 것입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.