LINUX.ORG.RU
ФорумTalks

Я не программист, но...


0

2

Свежий диалог с приятелем:

(05:47:57 PM) SmartyG: щас подумал, а че будет, если инициализировать переменную и, не присвоив ей значения, вывести ее на экран, написал на с++ прогу, и как ты думаешь, что она выдала?
(05:48:37 PM) O'Stin: ты не правильно говоришь
(05:48:47 PM) O'Stin: инициализировать это присвоить какое то значение
(05:48:54 PM) O'Stin: а то что ты вначале делаешь называется объявить
(05:49:02 PM) SmartyG: ну то есть да
(05:49:12 PM) SmartyG: объявить и не инициализировать
(05:49:13 PM) O'Stin: должен быть алерт
(05:49:17 PM) SmartyG: неа
(05:49:24 PM) O'Stin: что неинициализированная переменная
(05:49:32 PM) O'Stin: значит компилятор твой говно
(05:49:37 PM) O'Stin: там может быть что угодно
(05:49:44 PM) SmartyG: может конечно так компилятор работает, но он выдал единицу
(05:49:48 PM) O'Stin: в зависимости от того, что было уже в этой ячейке
(05:50:20 PM) O'Stin: что там было до того, как ты решил ее использовать, то и будет
(05:50:29 PM) O'Stin: может 0, может и не ноль
(05:50:34 PM) O'Stin: и вообще, учи матчасть
(05:50:40 PM) SmartyG: короче единица там
Magenta Development, Senior С++ Developer, ага.

★★★★★

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

Я и говорю поэтому про серьезную корпорацию. А когда язык развивают два с половиной человека, притом еще разделяют синтаксис на си-подобный и паскале-подобный, это же... хм... очень ненадежно как-то. Да и вообще, проект то от кого? Gnome комьюнити, они сами недавно жаловались, что документации нормальной у них нет (или это gimp был?).

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

Я так понимаю, что если это не профессия, откинем сразу этот аспект, это как водитель и шофер, то если ты что-то написал для своего удобства, т.е. не поленился, залез, прочитал, вник, и написал, то это уже подпадает под понятие «программирование», ведь ты сам написал, и работает. Кто-то сделает лучше, мейби.

TGZ ★★★★
()

btw,

touch a
nano ./a
#include <stdio.h>
int main() {
    int a;
    printf("%d",a);
    return 0;
}
gcc -Wall -pedantic -enable-c99 -std=c99 ./a.c
./a.exe

1628938183

Cygwin + Win7Max x64

От пересборок и перезапусков число не изменяется.

stevejobs ★★★★☆
()
Ответ на: btw, от stevejobs
$ gcc -Wall -pedantic -std=c99 ./test.c 
./test.c: In function ‘main’:
./test.c:4:11: warning: ‘a’ is used uninitialized in this function

$ ./a.out 
0
ostin ★★★★★
() автор топика
Ответ на: комментарий от different_thing

Я бы попробовал с memtester, но дерево пакетов снес. Новое с зависимостями обсчитывать - замучаешься

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

О том, что кого-то «судят» за изнасилования, все орут, а ты (телезритель-лузер) круче всех.

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

Поаллоцируй память чем-то ещё, наверняка изменится

#include <stdio.h>
#include <malloc.h>

int main() {
	static const ARRAY_SIZE = 10;
	int a;
        int* shnyaga;
	int counter;

        shnyaga = malloc(sizeof(int)*ARRAY_SIZE);
	for (counter=0;counter<ARRAY_SIZE;counter++) {
		shnyaga[counter]=counter;
	}

	printf ("%d",a);
	return 0;
}
./a.exe

1628938183

не изменилось ;)

stevejobs ★★★★☆
()

Кто-то должен был это написать

CL-USER> (defvar *x*)
*X*
CL-USER> *x*
The variable *X* is unbound.
   [Condition of type UNBOUND-VARIABLE]

Restarts:
 0: [RETRY] Retry SLIME REPL evaluation request.
 1: [*ABORT] Return to SLIME's top level.
 2: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" RUNNING {1003757521}>)

Backtrace:
  0: (SB-INT:SIMPLE-EVAL-IN-LEXENV *X* #<NULL-LEXENV>)
 --more--
alg0rythm
()

щас подумал, а че будет, если инициализировать переменную и, не присвоив ей значения, вывести ее на экран, написал на с++ прогу, и как ты думаешь, что она выдала?

Senior С++ Developer

Видимо мой «ранг» Developer не с этой планеты.

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

> malloc я для чистоты поместил перед int a;

в С'89 это не проканает, вначале нужно объявить все переменные (кроме констант), и только потом можно присваивать. Если объявить что-то после первого присвоения - не скомпиляется с ошибкой.

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

А вот и ты (-; Тут паскаль ругали. Но уже поздно, мы сами управились

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

Оффтоп: а format в CL может выводить месяц в трехбуквенном сокращении по такой схеме:

0 -> «Jan»
1 -> «Feb» итд.

Написал управляющую строку как ~[Jan~;Feb~; ---- Dec~]. А проще можно? Документацию читать влом, всё и так работает)

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

у мну тоже работает. ХЗ. Точно помню, что не должно работать. Возможность объявлять новые переменные прикрутили только в поздних сях.

//кто знает как включить совместимость со старой версией, откликнитесь!

stevejobs ★★★★☆
()

Обычно переменная при объявление инициализируется нулевым значением. А вышесказанное про динамическое выделение памяти, в си есть *alloc как забивающий выделенную область нулями так и не забивающий. А вот с++шный оператор new при выделении участка забивает нулями

Хотя да, по идее многие сишные компиляторы ругаются если объвить но не присвоить значение переменной. Си такой си

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

> прикрутили только в поздних сях.

c89 это поздний? Или что там по дефолту? Или его меняют, несмотря на 89 год? ;)

Надо бы лучше стандарт найти.

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

> Обычно переменная при объявление инициализируется нулевым значением

Ога, рассказывай про «обычно»

есть *alloc как забивающий выделенную область нулями так и не забивающий

Щито? С memcpy (или как его) не перепутал?

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

> > есть *alloc как забивающий выделенную область нулями так и не забивающий

Щито? С memcpy (или как его) не перепутал?


calloc, не?

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

>Обычно переменная при объявление инициализируется нулевым значением.
Обычно она не инициализируется. Всякие Бейсики — это отклонение, а не норма.

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

Инициализируется нулем, если она глобальная или static.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от different_thing

Oops.

Насчет дат: честно, не знаю. Вряд ли такое есть, но утверждать ничего не берусь.

alg0rythm
()

> инициализировать переменную и

не присвоив ей значения

/0

yoghurt ★★★★★
()

В наше время слишком мало хороших программистов, чтобы на всех постах Сеньёр %lang/tech% Developer были люди, которые полностью подходят по критериям.
Обидно, что человек, который, например, думает что PHP это будущее(где-то я слышал недавно цитату...), может получать овер 100к рур, хотя сам не знает даже что такое синглтон.

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