负数求模运算符号决定
C99规定"趋零截断".
如果第一个运算数为负数,那么求模结果为负数;如果第一个运算数是正数,那么求模结果也是正数.
实际上,标准是这样规定的:
无论何种情况,只要a和b都是整数值,便可以通过
a % b = a - (a/b) * b
来计算.-
关于真假的算术表示
By definition, the numeric value of a relational or logical expression is 1 if the relation is true, and 0 if the relation is false.
The unary negation opreator ! converts a non-zero operand into 0, and a zero operand into 1.
而有的函数,比如isdigit,返回非0值表示true,返回0表示false.
对于判断,比如if,while,for等等,非0意味着true,0意味着false. -
关于char的定义:
The language does not specify whether variables of type char are signed or unsigned quantities.
The definition of C guarantees that any character in the machine's standard printing character set will never be negative, so these characters will always be positive quantities in expressions. But arbitrary bit patterns stored in character variables may appear to be negative on some machines, yet positive on others. For portability, specify signed or unsigned if non-character data is to be stored in char variables. 关于字符的表示:
一个字符可以使用\ooo
(o表示一个八进制数字)或者\xhh
(h表示一个十六进制数字)来表示,但是这样最大只能表示数字值为255的字符.以下表达式:
int c = '\xfff'
合法么?
编译通不过,报错.-
位操作实例及问题:
- 问题:
The unary opertator ~ yields the one's complement of an inter; that is, it converts each 1-bit into a 0-bit and vice versa. For example,
x = x & ~077
sets the last six bits of x to zero. Note thatx & ~077
is independent of word length, and is thus preferable to, for example,x & 0177700
, which assumes that x is a 16-bit quantity. The portable form involves no extra cost, since ~077 is a constant expression that can be evaluated at compile time.
- 问题:
C语言学习笔记
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...