Wpis z mikrobloga

#programowanie #programista15k

Nie mogę tego skompilować. Pomożecie?

#include
int main()
{
char tab[] = {0x2f, 0x2a, 0x20, 0x4a, 0x45, 0x42, 0x41, -0x71, 0x20,
0x50, 0x49, 0x53, 0x21, 0x20, 0x2a, 0x2f, 0x00};
puts(tab);
return 0;
}
  • 29
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@aksnet: char to nie typ stringa??? W ogóle próbujesz wcisnąć obiekt do tablicy czy jak ? Nie znam się na C ale może spróbuj małymi kroczkami. Czyli zadeklaruj tablice, zobacz czy działa. Dodaj jeden element, zobacz czy działa itd. Tutaj chyba nawet nie zadeklarowałem tablicy, może to jest problem.
  • Odpowiedz
@groman43: Może problem z kodowaniem ;) "Ć" może mieć różne wartości w zależności od kodowania. Nie wiem w jakim kodowaniu to będzie -0x71 (0x8f), ale może w innym niż masz domyślne w systemie.
  • Odpowiedz
tylko że char ma zakres od -128 do 127 a 0xc4 ten zakres przekracza. Powinieneś dostać warning od kompilatora.


@aksnet: W sumie masz rację, ale warninga nie było. Poszła konwersja po cichu najwyraźniej.
  • Odpowiedz
tylko że char ma zakres od -128 do 127


@aksnet: signedness chara jest platform dependent to co przenośnie wiesz to że zajmuje on 1 bajt. Akurat w pracy mój kod musi działać na raz na amd64 i armv7 i są jazdy bo wiele bibliotek porobiło sobie założenia i potem jest zonk.
  • Odpowiedz
@aksnet: nom, po przygodach w świecie mikrokontrolerów domyślnie tak koduję (u)intX_t i pora na CSa. Tyle że z jakiegoś powodu w świecie softu pod Linuxa jest to wielkie objawienie. Tak wielkie że w coding standard kilku skąd iniąd dobrych firm w których pracowałem każą używać typów prostych. Widać C99 jest za nowe i musi się jeszcze parę dekad uleżeć.
  • Odpowiedz