Portál AbcLinuxu, 27. června 2025 21:57


Dotaz: konverzia na kratší typ - warning?

5.11.2016 15:11 rastos | skóre: 63 | blog: rastos
konverzia na kratší typ - warning?
Přečteno: 432×
Odpovědět | Admin
$ cat a.c
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <stdint.h>

int main(int argc,char *argv[])
{
        size_t a=(size_t)INT_MAX+1;
        int32_t b=a;
        printf("size_t %ld, int %ld\n",sizeof(a),sizeof(b));
        return 0;
}
$ gcc -Wall a.c
$ ./a.out 
size_t 8, int 4
$ gcc --version
gcc (GCC) 5.4.0 
...
Prečo na riadku 9 nie je vyhlásený warning o tom, že priraďujem 8 bajtovú hodnotu do 4 bajtovej?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (johniez)
5.11.2016 16:00 MadCatX
Rozbalit Rozbalit vše Re: konverzia na kratší typ - warning?
Odpovědět | | Sbalit | Link | Blokovat | Admin
-Wconversion
5.11.2016 17:26 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: konverzia na kratší typ - warning?
Dík.
6.11.2016 01:47 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: konverzia na kratší typ - warning?

-Wall -Wextra :-)

6.11.2016 02:36 MadCatX
Rozbalit Rozbalit vše Re: konverzia na kratší typ - warning?
To právě nestačí. -Wconversion a -Wsign-conversion fungují všude, clang má ještě navíc -Wshorten-64-to-32 a -Weverything.
10.11.2016 21:50 Ondrej Santiago Zajicek
Rozbalit Rozbalit vše Re: konverzia na kratší typ - warning?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Protoze prirazovani vetsi promenne do mensi je v C naprosto bezne, takze nutnost psat typecasty kvuli utiseni warningu by akorat zneprehlednila zdrojak.

BTW, ten printf() neni uplne portabilni. Zaprve size_t (jako typ vyrazu sizeof()) je unsigned (coz ale prakticky nehraje roli, nebot ty hodnoty budou stejne v pruniku rozsahu), zadruhe size_t v principu nemusi byt stejne dlouhy jako long (i kdyz obvykle je). Takze pouzit by se melo "%zu" misto "%ld".
10.11.2016 21:54 Ondrej Santiago Zajicek
Rozbalit Rozbalit vše Re: konverzia na kratší typ - warning?
prirazovani vetsi promenne do mensi

Nebo, abych byl presnejsi, hodnoty vetsiho typu do promenne mensiho typu.
11.11.2016 12:50 Radek Isa | skóre: 14
Rozbalit Rozbalit vše Re: konverzia na kratší typ - warning?
Odpovědět | | Sbalit | Link | Blokovat | Admin
já používám pro překlad
gcc -std=c11 -Wall -pedantic

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.