[HOMEWORK]C Data Types
Здравейте,
това са моите решения от домашното "C Data Types":
https://github.com/iliqnk/C/tree/master/02-C%20Data%20Types-Homework .
Всякакви препоръки са добре дошли.
Здравейте,
това са моите решения от домашното "C Data Types":
https://github.com/iliqnk/C/tree/master/02-C%20Data%20Types-Homework .
Всякакви препоръки са добре дошли.
Здравейте,
Поствам и моите решения на задачите в GitHub:
https://github.com/donstany/C-Programming/tree/master/02-DataTypes
Здравей IliqnK,
разгледах решението на 10-та задача ComparingFLoats. В езика C функцията ABS работи само за int, ако искаш да работи за числа с плаваща запетая трябва да използваш fabs.
Благодаря, не бях обърнал внимание, че е само за int-ове. Поправено.
То и аз разбрах в последствие :D
Аз имам въпрос, свързан със задачата за конвертиране на число от десетична в шестнайсетична бройна система. В задачата от домашното се иска да се конвертира числото 254 в шестнайсетично число. Намерих го - FE. Понеже 254 е в обсега на char, инициализирах променливата, която го "държи", по този начин. Защо след като се опитвам да изведа променливата с printf функцията, получавам като резултат "-2"? Когато инициализирам променливата като short, проблемът изчезва. Изглежда се получава превъртане, но на какво се дължи?
#include <stdio.h>
int main()
{
char num = 0xFE;
printf("%d", num);
return 0;
}
0xFE не е в обхвата на char ( -128 ... +127 ), може да използваш unsigned char (0 ... 255)
Здравей!
По този начин написано char ти е от -128 до 127 и затова ти првърта.
При unsigned char ще ти е от 0 до 255 и ще върви.
Благодаря за отговора. Обърках се понеже бях останал с погрешното впечатление, че char = byte (C#), а там обхвата по подразбиране е от 0 до 255.
Понеже по някаква причина не мога да започна нова тема във форума, ще задам въпроса си отново тук.
Доколкото разбрах, char типът е просто целочислен тип данни[1 байт], също както int[2 или 4 байта]. Забелязах, че е позволено да декларирам и инициализирам даден символ както като char, така и като int:
int text1 = 'a';
char text2 = 'b';
Защо обаче не може да се декларира и инициализира масив от символи като int, а не като char?
char text[] = "Hello, world"; //It works!
int text2[] = "Hello, world"; //It doesn't work!
int text1 = 'a' - работи понеже взима ascii кода на "а", т.е записва 97, а не character-а "а". С char text[] = "Hello, world" - инициализираш масив от символи, докато при int text2[] = "Hello, world" - декларираш масив от int-ове, а се опитваш да набуташ вътре character-и.
Съгласен съм, но нали и char, и int са целочислени типове, с какво char е по-различен от int? По тази логика и char <name>[] би трябвало да създава масив от целочислен тип char?
На задачата Exchange Variable Values аз съм го направил без temporary променлива. Само две променливи декларирам.
Ето го кода:
#include <stdio.h>
int main() {
int a = 5;
int b = 10;
printf("Before: a = %d, b = %d\n", a, b);
a = a + b;
b = a - b;
a = a -b;
printf("After: a = %d, b = %d\n", a, b);
return 0;
}
Искам да попитам първият символ NULL в ASCII таблицата еквивалентен ли е на терминиращата нула? Питам, защото, когато се опитвам да изведа този символ на конзолата с %c, ми излиза като интервал, но когато на мястото на плейсхолдъра добавя \0, четенето на стринга се прекъсва. Ето в примери какво точно имам предвид:
printf("I live in %cSofia", 0); //Принтира го като интервал - I live in Sofia
printf("I live in \0Sofia"); //терминира стринга - I live in
printf("I live in %cSofia", '\0'); // Отново го принтира като интервал - I live in Sofia
Каква е логиката? Опитвам се да намеря отговор в Интернет, но до момента нищо не намирам.
Здравей колега,
може би имаш проблем със средата за разработка. И трите неща, който си написал трябва да дават един и същи отговор, а именно "I live in". При мен и 3-те си работят както трябва (използвам NetBeans).
Може би. Този резултат получавам с cygwin компилатора през конзолата. Благодаря за включването!
Здравейте,
Аз имам различно решение на задачата за Gender. Ето го:
void Gender (void)
{
int answer;
printf("Are you a female?");
scanf("%d", &answer);
printf(answer ? "true" : "false");
}