Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Re: Вопросы по С/С++ (СИ)

Сб дек 11, 2010 16:59:48

Вы либо просили не то, что хотели
T0lik писал(а):Если c!=A то нужно чтобы результат был 0, если c=A то результат должен быть A
либо нашли не то, что хотели.

A ^ B даст 0, если A == B и кашу, если A != B.

Это просто побитовое сравнение, в каждом бите 0 при совпадении соответствующих битов, 1 при несовпадении.

Re: Вопросы по С/С++ (СИ)

Пн дек 13, 2010 17:39:51

всем мяу!

напишите пожалуйста полный исходник на С банальной программки:

pic16f84

Изображение

как взять сигнал с A0, и через B0 его выдать?

прям вот чтоб компилировать можно было и прошить, если не сложно.. помогите..

Re: Вопросы по С/С++ (СИ)

Пн дек 13, 2010 21:23:56

V2oD2o писал(а):...напишите пожалуйста полный исходник на С банальной программки...

Вот и выросло новое поколение...
Печально...

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 01:03:10

Други помагайте. написал функцию вычисления абсолютного значения числа.
функция-
Код:
char abs (char x)
{
if (x<0) x=x*(-1);
return x;
}
Почему
Код:
abs(-11);
возвращает 245 а не 11

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 01:32:54

Вероятно, нужно использовать тип signed char.

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 01:45:28

signed char - работает правильно. Спасибо.
кстати, а чем отличаются char и signed char? оба типа, это 8 битные переменные со значением от -128 до 127. чета в книжках этот вопрос не рассматривается, просто говорится что есть char и signed char, и все.....

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 07:56:35

asteroid7 писал(а):
V2oD2o писал(а):...напишите пожалуйста полный исходник на С банальной программки...

Вот и выросло новое поколение...
Печально...


считаю это не совсем адекватной реакцией.. если бы тебе нужна была помощь в delphi, php, css, ps, sql, ai, javascript, 3dmax, solidworks и т.д. и т.п. где я бы мог дать совет - я бы не стал смеятся над твоими попытками изучить что то новое и полезное.. у тебя то что я просил помощи заняло бы минуты 2-3..

печально как раз вот это..

вопрос актуален

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 09:31:40

O-LED писал(а):кстати, а чем отличаются char и signed char? оба типа, это 8 битные переменные со значением от -128 до 127. чета в книжках этот вопрос не рассматривается, просто говорится что есть char и signed char, и все.....
вопрос этот рассматривается и весьма четко на нем заостряется внимание: тип char по стандарту Си - это знаковый тип, т.е. число со знаком. однако, так как нет отдельного типа для обычного байтового числа без знака, многие компиляторы отступают от стандарта и считают char беззнаковым. то есть фактически наличие или отсутствие знака у char определяется реализацией конкретного компилятора. об этом всегда напоминают, в каждом компиляторе есть опция "переключения" char-а со знаковго на беззнаковый и наоборот... короче говоря, идет путаница.

однако, есть простой способ путаницы избежать, не взирая на компиляторы: надо всегда явно указывать наличие или отсутствие знака у переменных типа char:
signed char - для знаковых
unsigned char - для беззнаковых
просто char не использовать вообще или использовать только для строковых переменных.

в этом случае можно гарантировать, что любой компилятор поймет программу правильно и однозначно. аналогичная неоднозначность имеется и с типом int и его производными - стандарт оговаривает только соотношение между int и long int (long в 2 раза длиннее int) или иные комбинации, но вот размер самого int определяется платформой: для AVR int занимает 16 бит, для компьютера - 32 бита, есть и варианты в 64 бита... таким образом, путаница и проблемы могут быть и тут...

в частности, более продвинутые стандарты Си, например, С99, уже вводит и рекомендует использовать вместо неоднозначных типов другие:
uint8_t - беззнаковое 8-битное число
int8_t - 8-битное со знаком число
uint16_t - 16-битное без знака
int16_t - 16-битное со знаком
и т.д.

использование этих типов совместно с компиляторами, поддерживающими С99 гарантирует, что переменная будет иметь именно ту разрядность, что указано - никаких проблем с переносимостью!

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 12:01:49

ARV Спасибо. Если вы не против, я еще немного "потуплю". Вы пишите
тип char по стандарту Си - это знаковый тип, т.е. число со знаком.
а потом
signed char - для знаковых
так в чем разница? оба типа - знаковые 8битные целочисленные переменные.

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 12:05:43

Разница в "умолчаниях". По умолчанию тип char (также как и int) знаковый, но можно это принудительно указать компилятору: signed char.

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 12:37:21

O-LED писал(а):так в чем разница? оба типа - знаковые 8битные целочисленные переменные.


Это зависит от реализации компилятора. Например, в IAR C тип char по умолчанию беззнаковый. Чтобы сделать его знаковым, нужно изменить настройки компилятора:
Вложения
Char.gif
(15.86 KiB) Скачиваний: 663

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 12:56:58

понятно. значит просто буду ВСЕГДА явно указывать signed или unsigned для переменных.

зы. как думаете, стоит купить http://oz.by/books/more10162722.html?cl ... id=4368282 ?

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 13:08:48

Цена: 70 122 руб.
:shock:

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 13:19:42

Gudd-Head писал(а):
Цена: 70 122 руб.
:shock:

поди в белорусских рублях?

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 13:25:57

O-LED писал(а):понятно. значит просто буду ВСЕГДА явно указывать signed или unsigned для переменных.


Да, так вернее будет. Но можно просто узнать про типы своего компилятора. А то можно далеко зайти. Согласно правилам MISRA, базовые типа char, int, short, long, float, double вообще не должны использоваться. Вместо них для определенного компилятора директивами typedef должны быть определены и использованы имена типов эквивалентной длины. Например, UI_8, SI_16 и т.д. Но жить по таким правилам скучно, нет огонька, задора, ночей отладки!

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 13:26:25

lix писал(а):поди в белорусских рублях?

Уффф... наверняка :)))

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 21:51:06

Согласен со всем текстом, кроме маленького уточнения:
ARV писал(а):тип char по стандарту Си - это знаковый тип, т.е. число со знаком.
В отличие от int, short int, long int, которые бывают только знаковые или беззнаковые, типов char аж три
There are three character types, designated as char, signed char, and unsigned char.
От типа char требуется только то, чтобы в него влазили все символы из набора целевой машины, при этом базовый набор символов, прописанный как обязаельный в стандарте языка С — должен представяться положительным значением, остальные — как удобно.
An object declared as type char is large enough to store any member of the basic execution character set. If a member of the required source character set enumerated in $2.2.1 is stored in a char object, its value is guaranteed to be positive. If other quantities are stored in a char object, the behavior is implementation-defined: the values are treated as either signed or nonnegative integers.
И только потом вводится знаковый char вместе с остальными знаковыми тиами
There are four signed integer types, designated as signed char, short int, int, and long int.
An object declared as type signed char occupies the same amount of storage as a ``plain'' char object.
и беззнаковый char вместе с остальными беззнаковыми типами
For each of the signed integer types, there is a corresponding unsigned integer type that uses the same amount of storage (including sign information) and has the same alignment requirements.
Таким образом, компиляторы не
ARV писал(а):отступают от стандарта и считают char беззнаковым. то есть фактически наличие или отсутствие знака у char определяется реализацией конкретного компилятора
а пользуются явным разрешением на implementation-defined знаковость "просто char".

p.s. Цитаты из стандрта С 1989-го года, в C99 то же самое.

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 22:10:09

В отличие от int, short int, long int, которые бывают только знаковые или беззнаковые, типов char аж три

ага. переменные int прекрасно работали беззнаковыми переменными без всяких signed , а вот переменные char в кодевижн требуют обязателно signed

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 22:18:16

O-LED писал(а):ага. переменные int прекрасно работали беззнаковыми переменными без всяких signed , а вот переменные char в кодевижн требуют обязателно signed
int прекрасно работали беззнаковыми, пока не было попытки записать в них беззнаковое число 50000 например :) вот тут-то они бы и подкачали - стали знаковыми :)))

а в настройках CodeVision вы поковыряйтесь - где-то наверняка галочку можно снять/поставить, и char станет signed...

Re: Вопросы по С/С++ (СИ)

Вт дек 14, 2010 22:37:13

ARV Нет уж. лучше я привыкну явно определять signed и unsigned чем снова в будущем буду ловить "разновидность" подхода к этому вопросу компиляторов. :kill:
Ответить