|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Nickita A Startcev 2:5030/1321.19 18 Nov 2006 18:51:38 To : Kirill Frolov Subject : цккпсс не пускает в юзнет. -------------------------------------------------------------------------------- 05 Nov 06 , 02:21 Kirill Frolov писал к Zahar Kiselev: >> Знаю, приходилось на этом писать. Был там один трудноуловимый глюк, >> если написать длинное целое = короткое целое + короткое целое то >> результат выходящий за размер короткого целого обрезался молча и без >> каких-либо предупреждений. Hо это так, просто вспомнилось. А по сути >> вопроса KF> Точно также обрезается и в C. Ибо вначале результат вычисляется, а KF> потом только присваивание происходит (см. приоритет операций). А KF> результат вычисляется с той шириной слова которая есть, ну или KF> расширяется до целого. Ет. По умолчанию все считается в интах. === #include <stdio.h> int main() { unsigned char a,b; unsigned int foo,bar; unsigned long long ret; printf("sizeof(unsigned char)=%i\n",sizeof(unsigned char)); printf("sizeof(unsigned int)=%i\n",sizeof(unsigned int)); printf("sizeof(unsigned long long)=%i\n",sizeof(unsigned long long)); a = 0xF0; b = 0xE0; if( a+b != 0x1d0) { unsigned char c = a+b; printf("0:c=0x%X\n",c); } else printf("1:casting to int, a+b=0x1d0\n"); foo=0xF0000000; bar=0xF0000000; ret=foo+bar; if(ret<=0xffffFFFF) printf("2:casting to int\n"); else printf("3:no casting to int\n"); ret=(unsigned long long)foo+(unsigned long long)bar; if(ret<=0xffffFFFFl) printf("4:casting to int\n"); else printf("5:no casting to int\n"); return 0; } === sizeof(unsigned char)=1 sizeof(unsigned int)=4 sizeof(unsigned long long)=8 1:casting to int, a+b=0x1d0 2:casting to int 5:no casting to int === >> честно говоря даже и не знаю что сказать в пользу такого выбора. В >> том смысле что хрен редьки не слаще. А тот человек скорее всего до >> бэйсика на фортране считал, потому на бэйсик и переехал. Причем >> именно на классический, с номерами строк. KF> Хрен говоришь редьки не слаще? Только паскаль в реализации от KF> борланда -- какой никакой, а полноценный язык программирования. Что KF> можно написать на бейсике (Visual Basic не в счёт), кроме учебных KF> программ, я не представляю. рассчетные программы типа "ввести кучу данных, долго считать, вывести число" можно писать на чем угодно, хоть на флеше. . С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Press Shift + Reset to continue --- GoldED+/LNX 1.1.4.7 * Origin: Люди Билли не любили... (c) (2:5030/1321.19) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/4560455f1eae.html, оценка из 5, голосов 10
|