Здравствуйте. Я недавно начал учиться программированию на С. Сначала, когда завершалась программа в консоли появлялось "нажмите на любую клавишу для завершения", а сейчас пропало....Что я стал пропускать...не успеваю посмотреть что там)))
» Вопросы по программированию на C/С++
main()
{
//...
puts("Press Enter to exit");
getchar();
}
Anykey чуть посложнее будет.
{
//...
puts("Press Enter to exit");
getchar();
}
Anykey чуть посложнее будет.
не не не....фишка в том, что я отдельно не вписывал это. А было...а сейчас пропало....Причем даже первые задачки переписываю, все равно так....
В winXP такая галочка была "Close window on exit", если через shortcut запускать.
Я сижу на 7, и это было может месяц или два назад..версия та же Visual 2008 express edition
Добавлено:
И запускаю я через visual, а открывает он в консольке
Добавлено:
И запускаю я через visual, а открывает он в консольке
Grikontarkingov
в таком случае надо спрашивать не в данной теме, а в теме по VS, т.к. данное поведение собственно к языкам C/C++ отношения не имеет.
в таком случае надо спрашивать не в данной теме, а в теме по VS, т.к. данное поведение собственно к языкам C/C++ отношения не имеет.
Спасибо за совет)))
Перед запуском мышой breakpoint поставь в серой вертикальной полосе слева от кода. Напротив return'a из main или в другом подходящем месте.
да ладно вам, накинулись на новичка...
посоветовали бы лучше по-простому getch() в проге поставить, и Студия покорно подождёт...
посоветовали бы лучше по-простому getch() в проге поставить, и Студия покорно подождёт...
Напомните, пожалуйста, как в C (не в С++) передавать функции в качестве параметра ссылку на структуру . Код даёт ошибку:
Код:
#include <stdlib.h>
struct AAA
{
int b;
char c;
};
int main()
{
printf("Hello world!\n");
return 0;
}
void func(struct AAA& a)
{
a.b = 0;
return ;
}
Код:
#include <stdlib.h>
struct AAA
{
int b;
char c;
};
int main()
{
printf("Hello world!\n");
return 0;
}
void func(struct AAA& a)
{
a.b = 0;
return ;
}
void func(struct AAA * a)
{
a->b = 10;
return ;
}
вызов: func(&a);
{
a->b = 10;
return ;
}
вызов: func(&a);
akaGM
Спасибо, передача указателем мне известна. Похоже, что в чистом С нет ссылок вообще, я правильно понял?
Спасибо, передача указателем мне известна. Похоже, что в чистом С нет ссылок вообще, я правильно понял?
да ради бога...
void func(struct AAA a)
{
printf("%d\n", a.b);
return ;
}
вызов: func(a);
Добавлено:
а полезет в стек ссылка или всё содержимое зависит от оптимизации...
void func(struct AAA a)
{
printf("%d\n", a.b);
return ;
}
вызов: func(a);
Добавлено:
а полезет в стек ссылка или всё содержимое зависит от оптимизации...
Цитата:
а полезет в стек ссылка или всё содержимое зависит от оптимизации...
Понял, благодарю.
Цитата:
да ради бога...
void func(struct AAA a)
{
printf("%d\n", a.b);
return ;
}
вызов: func(a);
Добавлено:
а полезет в стек ссылка или всё содержимое зависит от оптимизации...
ЭЭээ. Это просто шикарный пример, особенно если у него там было изменение поля структуры..
О том, что там что-то может до такой степени заоптимизироваться думать вообще не надо.
Если передаешь по значению - получаешь копирование.
Цитата:
Похоже, что в чистом С нет ссылок вообще, я правильно понял?
Понятно же, что функционал ссылок заменяется без особой боли указателями.
Имхо, передача объектов для их изменения через указатели делает эти изменения более явными, в отличии от использования ссылок.
Надеюсь, вы поймете, что я хотел сказать)
Цитата:
особенно если у него там было изменение поля структуры..а у него там было?
значит, не судьба изменить...
Цитата:
Понятно же, что функционал ссылок заменяется без особой боли указателямия бы даже сказал, что наоборот, это ещё кто кого заменяет...
это ссылки -- для нелюбителей многа букаф и "какбэ" алиас указателей, не знаю, зачем от С что-то ещё просить...
я тут одному "типа программисту" объяснял почему он не может написать
а = 10;
a = b / c;
a = "всякую тут хрень";
как объявить (typedef) тип, к примеру, __int16 (как в VS C++), если в какой-либо ОС sizeof(char)=1, а sizeof(short)=sizeof(int)=sizeof(long)=sizeof(long long)=sizeof(void*)=8 (такое в модели данных SILP64)?
Если компилятор не поддерживает неявные преобразования из 2 байтовых переменных в 8 байтовые, то никак.
Никаких преобразований точно не нужно. Нужен тип, который будет именно 2-х или 4-х байтовым вне зависимости от модели данных. Но если такое никак, то фигово.
так через платформо-зависимые #ifdef-ы попробуй...
а какой смысл, если "присваивать" данный тип нечему будет.
т.е.
Код: #ifdef КАКАЯ_ТО_ПЛАТФОРМА_С_МОДЕЛЬЮ_ДАННЫХ_SILP64
typedef что_здесь_будет __int16
#endif
т.е.
Код: #ifdef КАКАЯ_ТО_ПЛАТФОРМА_С_МОДЕЛЬЮ_ДАННЫХ_SILP64
typedef что_здесь_будет __int16
#endif
ну по твоему вопросу сложно понять логику твоей нужды...
Цитата:
кстати, не поверю, что тучей ifdef-ов нельзя учесть все возможные размеры типов для всех платформ/моделей данных на уровне одного общего инклудника...
Цитата:
или вообще такое послать нафигя ж говорю: сложно понять :)
кстати, не поверю, что тучей ifdef-ов нельзя учесть все возможные размеры типов для всех платформ/моделей данных на уровне одного общего инклудника...
unreal666
Цитата:
А зачем, собственно?
Цитата:
Никаких преобразований точно не нужно. Нужен тип, который будет именно 2-х или 4-х байтовым вне зависимости от модели данных.
А зачем, собственно?
Цитата:
А зачем, собственно?
чтобы работать со всякими форматами данных (файлы определенных типов, стандартные протоколы и т.п.) одинаково, вне зависимости от "прибабахнутости" компиляторов на разных ОС.
inttypes.h + int16_t ?
ne_viens
по спекам C++:
Код: typedef signed integer type int8_t; // optional
typedef signed integer type int16_t; // optional
typedef signed integer type int32_t; // optional
typedef signed integer type int64_t; // optional
по спекам C++:
Код: typedef signed integer type int8_t; // optional
typedef signed integer type int16_t; // optional
typedef signed integer type int32_t; // optional
typedef signed integer type int64_t; // optional
unreal666
Цитата:
Тогда, пожалуй, разве что прокручивать всё через байтовые массивы. При условии, конечно, что хоть байты там восьмибитовые.
Цитата:
чтобы работать со всякими форматами данных (файлы определенных типов, стандартные протоколы и т.п.) одинаково, вне зависимости от "прибабахнутости" компиляторов на разных ОС.
Тогда, пожалуй, разве что прокручивать всё через байтовые массивы. При условии, конечно, что хоть байты там восьмибитовые.
Цитата:
При условии, конечно, что хоть байты там восьмибитовые.
ну судя по основным моделям данных, char везде = 1 байту. Так что похоже да - универсальные только массивы char'ов.
И снова я))) Вопрос такой, есть задачка на Си:
Напишите программу для решения уравнения ax = b относительно х в целых числах. Учтите, что a может принимать любые значения, в том числе и 0.
На вход программе подаются целые числа a, b, по модулю не превосходящие 30000. Требуется вывести целый корень уравнения, если он существует и единственный. Если уравнение не имеет корней, то вывести no solution. Если уравнение имеет больше одного целого корня, то вывести many solutions.
Вот ее решение:
#include <stdio.h>
int main(void){
int a,b;
scanf("%d %d",&a,&b);
if((a==0)&&(b!=0)) printf("no solution\n");
else {
if((a==0)&&(b==0)) printf("many solution\n");
else {
if (b%a!=0) printf("no solution\n");
else {
printf("%d\n",b/a);
}
}
}
return(0);
}
Вопрос у меня такой, в строчке где "if (b%a!=0) printf("no solution\n");" я категорически не понимаю что значит процент перед "а"...помогите плиз))
Напишите программу для решения уравнения ax = b относительно х в целых числах. Учтите, что a может принимать любые значения, в том числе и 0.
На вход программе подаются целые числа a, b, по модулю не превосходящие 30000. Требуется вывести целый корень уравнения, если он существует и единственный. Если уравнение не имеет корней, то вывести no solution. Если уравнение имеет больше одного целого корня, то вывести many solutions.
Вот ее решение:
#include <stdio.h>
int main(void){
int a,b;
scanf("%d %d",&a,&b);
if((a==0)&&(b!=0)) printf("no solution\n");
else {
if((a==0)&&(b==0)) printf("many solution\n");
else {
if (b%a!=0) printf("no solution\n");
else {
printf("%d\n",b/a);
}
}
}
return(0);
}
Вопрос у меня такой, в строчке где "if (b%a!=0) printf("no solution\n");" я категорически не понимаю что значит процент перед "а"...помогите плиз))
целочисленное "деление по модулю"
10 % 3 = 1
10 % 3 = 1
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
Предыдущая тема: не знаю как назвать тему :-)
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.