Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
После анализа строки (1) компилятор считает, что x не может быть нулевым указателем и удаляет (2) и (3) как недоступный код (dead code elimination).
((void(*)(void))0)();Не надо рассказывать сказки.
Вы получили ответ на вопрос «и что с юникодом не так?»Я получил ответ на вопрос «что не так с мультибайтовыми кодировками?» :) А однобайтные кодировки своё уже отжили. Более того, не забывайте, что всякие там китайские и японские локальные кодировки — они уже не однобайтовые, а multibyte и обладают теми же проблемами.
Теперь возвращаемся к моему изначальному заявлению про юникод и ваш вопрос «что не так с юникодом»? Я ответил на этот вопрос?Вопрос был не мой, но мне кажется, я понял вашу мысль.
Потому что SS и ß — это одна буква. Не говоря уже о том, что ü и комбинация знаков ¨ и u — это тоже одна буква.решается в случае однобайтовых кодировок?
Будем. Причем с глюками. Если в файловой системе хоть где-то стоит if(strlen(filename) > 255) strncpy(что-то-там), при условии, что и strlen и strncpy однобайтовые, то все, приплыли.strlen(filename)
SS и ß — это одна буква. Не говоря уже о том, что ü и комбинация знаков ¨ и u — это тоже одна буква.
#include <stdio.h>
int main()
{
printf( "%c\n", 4["abcdefgh"] );
return 0;
}
char s[] = "abcdefgh";
printf( "%c\n", s[4] );
for(int i = 0; i < 10; i++) {
//smth
}
for(int i = 0; i < 10; i++) {
//smth
}
#include <stdio.h>
int i;
int i = 0;
int main()
{
return 0;
}int main(argc,argv)
int argc;
const char** argv;
{
return 0;
}int a = 2;
unsigned int b = 4;
cout << a - b << endl;
#include "stdio.h"
void main()
{
// Эта программа должна вывести /
// первые 8 чисел Фибоначчи: /
// 1, 1, 2, 3, 5, 8, 13, 21. /
// Определим первое и второе /
// значение ряда - это единицы: /
int first = 1, second = 1;
// Сразу же выведем первое число: /
printf("%d, ", first);
// Цикл "делать следующее, пока /
// второе значение меньше 20". /
while (second < 20) { // проверили/
// Следующее - это сумма /
// первого и второго. Вычислим /
int next = first + second;
// Теперь надо записать второе /
// значение в первое, а следую- /
// щее - во второе, так ведь ???/
first = second;
second = next;
// Выведем на экран первое число/
printf("%d, ", first);
}
// Выведем последнее значение ряда/
printf("%d\n", second);
}$ cc 1.c -o 123
1.c: In function ‘main’:
1.c:25:53: warning: trigraph ??/ ignored, use -trigraphs to enable [-Wtrigraphs]
Для продолжения нажмите любую клавишу...
$ clang 1.c -o 124
1.c:3:1: error: 'main' must return 'int'
void main()
^
1 error generated.
Для продолжения нажмите любую клавишу...
поправляем...
$ clang 1.c -o 124
$ ./124
1, 1, 2, 3, 5, 8, 13, 21
Для продолжения нажмите любую клавишу...
$ ./123
1, 1, 2, 3, 5, 8, 13, 21
Для продолжения нажмите любую клавишу...
$ cc 1.c -o 111
1.c: In function ‘main’:
1.c:6:9: error: redeclaration of ‘i’ with no linkage
1.c:5:9: note: previous declaration of ‘i’ was here
Для продолжения нажмите любую клавишу...
$ clang 1.c -o 111
1.c:6:9: error: redefinition of 'i'
int i = 10;
^
1.c:5:9: note: previous definition is here
int i;
^
1 error generated.
int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
Я не знаю Си