LINUX.ORG.RU

Си


2

4
#include <stdlib.h>
#include <stdio.h> 

int main(int argc, char *argv[]) {

char *num = «5555»; 	
	
	if (argc != 2) {
	printf(«No param\n»);
		exit(0);
	}
	
	if (argv[1] != num) {
	printf(«Fail num %s\n»,num);
	printf(«Fail arg %s\n»,argv[1]);
		exit(0);
	}

...
}

Подскажите, почему сравниваются два одинаковых значения, но определяются, как - неодинаковые!

Вывод программы:

Fail num 5555
Fail arg 5555

Ответ на: комментарий от qulinxao

Синдром утёнка детектед

если и у кого дык у тя который считает паскакаль «не_языком» :)

ИМХО всё наоборот.

emulek
()
Ответ на: комментарий от emulek

А что, там кто-то говорил, что проверяется только половинка адреса?

Были там у кого-то сомнения насчет сегментного адреса.

dvl36
()
Ответ на: комментарий от emulek

ох жеж.

ты мне по словам поставил диагноз щито у мя паскаль первый ибо синдром утёнка к нему.

при этом твоё подчёркнутое именование паскакаля показывает , что твой первый язык был/есть «качественней» среди лиц мнение которых определило твоё отношение к паскальчику - даже не могу вспомнить, что это за язык.

ну по кури логику .

qulinxao ★★☆
()

2 alpha в толксы

В следующий раз соберешься писать обзор - потрать немножко времени на то, чтобы наполнить его содержанием. А если спрашивать до написания обзора, а не после, то он ещё и осмысленным может стать.

Охохо, кто-то несколько дней назад рассказывал про заботу о простом пользователе и прочие траляля. Вот перед тобой был простой пользователь, что ж гном о нём никак не позаботился?

Дожили до того, что даже матёрых кедорастов «интуитивные интерфейсы» гнома вгоняют в ужас, а всё продолжаете кукарекать про какого-то «простого пользователя».

«Простой пользователь» тоже должен бегать по всему ЛОРу и спрашивать, почему кнопки не нажимаются и звук не регулируется? Лол.

anonymous
()
Ответ на: комментарий от qulinxao

при этом твоё подчёркнутое именование паскакаля показывает , что твой первый язык был/есть «качественней» среди лиц мнение которых определило твоё отношение к паскальчику - даже не могу вспомнить, что это за язык.

ассемблер. Слышал когда-нибудь? А твой турбопасквиль был для меня чем-то вроде как php сейчас. Язык для идиотов и школьников.

ЗЫЖ это сейчас я стал мудрее и лояльней. (:

emulek
()
Ответ на: комментарий от emulek
Ответ на: комментарий от anonymous

Хорош дурью маяться, разбанивайся давай )

alpha ★★★★★
()
Ответ на: комментарий от qulinxao

ассемблер для слабаков

лол. Выбрось, наконец, бейсик из своего мозга на помойку. :D

Ибо:

waste of a valuable scientific computing instrument to use it to do clerical work.

асемблерьё хоть полиморфное то было?

А то! Бывало, полиморфишь себе на ассемблере, как душа пожелает, и в ус не дуешь.

Ты сделал мой день :D

dvl36
()
Ответ на: комментарий от qulinxao

sincler basic

Sinclair. Отцов надо чтить.

mv ★★★★★
()
Ответ на: комментарий от Anon

Я тут на быдлохабре автору некоей PVS-studio сказал, что -Wall -Werror спасут от 99% случаев, в которых его «студия» используется, мягко намекнув на ненужность сего продукта.

Компиляторы обычно проводят весьма ограниченный статический анализ (то, что нужно для кодогенерации + то, что отлавливает популярные ошибки, не сильно тормозя компиляцию), поэтому специализированные средства статического анализа (в т.ч вещи типа clang --analyze) всегда будут полезны.

annulen ★★★★★
()
Ответ на: комментарий от wota

по стандарту wchar_t обязан вмещать любой символ

Нифига он тебе не обязан.

Type wchar_t is a distinct type whose values can represent distinct codes for all members of the largest extended character set specified among the supported locales (22.3.1).

Из этого никак не следует, что в нём есть все символы (пример: в системе есть локали Big5 и EUC-JP, в этом случае wchar_t не обязан быть достаточно широк, чтобы вмещать одновременно символы из обеих кодировок и тем более он не обязан вмещать ничего из астральных плоскостей юникода).

для валидного wchar_t нормализация не нужна по определению

Ты вообще в курсе, что такое нормализация? Если да — как именно хранятся символы в wchar_t? NFC? NFD? NFKC? NFKD?

The string «fi» can be represented either by the characters «f» and «i» (U+0066 U+0069) or by the ligature «fi» (U+FB01). Similar considerations apply for many other combinations of characters for which Unicode defines ligatures.

Вопрос знатокам: fi — это 1 символ или 2 в wchar_t? И вообще, что такое «символ» в wchar_t и какой в нём практический смысл, если мы всё равно сначала чистим его от суррогатных пар, а потом ещё и нормализуем перед тем, как делать с ним хоть что-то?

И да, работа с русским алфавитом + урезанным до ASCII7 английским ≠ работе с юникодом, это — пригламуренная версия koi8-r со смайлами.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Нифига он тебе не обязан.
distinct type whose values can represent distinct codes for all members of the largest extended character set specified among the supported locales

окай

Из этого никак не следует, что в нём есть все символы

очевидно подразумевалась определенная локаль

Ты вообще в курсе, что такое нормализация?

да - костыли надо костылями, если не смешивать теплое с мягким - она не нужна

И вообще, что такое «символ» в wchar_t и какой в нём практический смысл, если мы всё равно сначала чистим его от суррогатных пар, а потом ещё и нормализуем перед тем, как делать с ним хоть что-то?

смысл как раз в том, чтоб не иметь костылей, но тебе видно они жизненно необходимы

И да, работа с русским алфавитом + урезанным до ASCII7 английским ≠ работе с юникодом, это — пригламуренная версия koi8-r со смайлами.

неслабо тебе мозги промыло, если есть два одинаковых слова для определенной локали, и они «бинарно» не равны, то используемая кодировка говно по определению

wota ★★
()
Ответ на: комментарий от x3al

в этом случае wchar_t не обязан быть достаточно широк, чтобы вмещать одновременно символы из обеих кодировок

«distinct codes for all members of the largest extended character set specified among the supported locales»

я английский знаю плохо - но тут английским по белому написано, что обязан

wota ★★
()
Ответ на: комментарий от wota

да - костыли надо костылями, если не смешивать теплое с мягким - она не нужна

Если весь юникод, который есть у тебя, появляется только изнутри твоей программы — не нужна. При работе с вводом юзера, файловой системой и вообще чем угодно — нужна.

смысл как раз в том, чтоб не иметь костылей, но тебе видно они жизненно необходимы

Лол. И как ты предлагаешь разруливать ситуацию с нормализацией? Игнорировать? Напоминаю, даже имена файлов имеют определённую нормализацию.

Весь софт, который работает с юникодом, пропускает ВЕСЬ юникодный ввод через NFD и пропускает ВЕСЬ вывод через NFC как минимум, если у него нет более хороших идей. Иначе ты получаешь не юникод, а очередную KOI8-R со смайлами.

если есть два одинаковых слова для определенной локали, и они «бинарно» не равны, то используемая кодировка говно по определению

Ок, значит, все реализации юникода — говно. Конструктивные предложения по тому, какую кодировку использовать, будут?

Юникодные строки ВСЕГДА сравнивались и будут сравниваться через collate. И да, он зависим от локали. Да, юникод сложен, но более простого способа реализовать i18n (на деле, а не галочкой) — нет.

ae == æ в английской локали и по дефолту (если не указывать локаль). ae ≠ æ в исландской локали. Если кодер отмазывается тем, что строки не совпадают побайтово — он не умеет в юникод и i18n и сваливает компьютерную проблему (давным-давно решённую) на конечного пользователя.

x3al ★★★★★
()
Ответ на: комментарий от wota

Тут английским по белому написано, что все символы самой большой из них. Не обоих.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Если весь юникод, который есть у тебя, появляется только изнутри твоей программы — не нужна. При работе с вводом юзера, файловой системой и вообще чем угодно — нужна.

а не нужно мыслить терминами юникода

И как ты предлагаешь разруливать ситуацию с нормализацией?
Весь софт, который работает с юникодом,

и еще раз - не нужно мыслить терминами юникода

Ок, значит, все реализации юникода — говно. Конструктивные предложения по тому, какую кодировку использовать, будут?

очевидно такую, где, к примеру, не присутствуют отдельно умляуты, 2^32 хватит, чтоб выписать любые необходимые комбинации, и это избавит от неоднозначностей, а диграфы и т.п. при желании можно отдельно обрабатывать, это уже задачи не связанные с хранением именно уникальных символов

Тут английским по белому написано, что все символы самой большой из них. Не обоих.

точно

wota ★★
()
Ответ на: комментарий от wota

а не нужно мыслить терминами юникода

Ты предлагаешь велосипедить свою encoding на базе юникодного charset'а?

Юзер делает поиск по строке. Ничерта не находит потому, что ты забыл нормализовать. Это его проблемы?

хранением именно уникальных символов

Эм. Хранить юникодный текст можно чем угодно, нас интересует работа с ним. И в работе от wchar_t нет никакого толка: он не кроссплатформенный, а ICU работает либо с uint16_t, либо с utf-8 текстом в обычных char*/string'ах.

2^32 хватит, чтоб выписать любые необходимые комбинации

Нехватит ^_^

Unicode Consortium добавил precomposed-формы только потому, что на некоторых платформах невозможно было реализовать юникод в полной мере. Это — legacy-костыль by design.

А с композитными символами начинается веселье, когда их 2+ на один глиф. Юникодный софт должен считать варианты с разным порядком комбинирующих символов одинаковыми.

точно

Не точно ^_^ Там — codepoint, а не символ. inb4 мыслить терминами юникода (что неверно: это — устоявшийся термин линуксового i18n): предложи более вменяемую систему и объясни, чем она лучше.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Ты предлагаешь велосипедить свою encoding на базе юникодного charset'а?

возможно, только в сторону упрощения

Юзер делает поиск по строке. Ничерта не находит потому, что ты забыл нормализовать. Это его проблемы?

это проблемы юникода

в работе от wchar_t нет никакого толка: он не кроссплатформенный

в работе как раз есть толк, а для переносимости можно экспортировать/импортировать в тот же UTF-8

Нехватит ^_^

гарантированно хватит, если правильно делать

Unicode Consortium добавил precomposed-формы только потому, что на некоторых платформах невозможно было реализовать юникод в полной мере. Это — legacy-костыль by design

я ж говорю - костыли на костылях :)

П.С. лень дальше спорить, тем более тема для меня далекая и неинтересная, так что согласен - юникод рулит и педалит, хотя лично мне хватило бы и что-то вроде урезанного UCS-2 без BOM, суррогатных пар, нормализаций, LE/BE и т.п.

wota ★★
()

В конце одного есть \0?

anonymous
()
Ответ на: комментарий от Anon

Пойди, попробуй с таким же бредом выступить перед NASA, и другими потребителями продукции Coverity. Будет весело, когда они тебя с поносом смешают.

А для начала почитай вот это, почувствуй себя ничтожеством:

http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.