1. 基本的单片机c语言编程问题P1=0xff高电平
51单片机是8位的,意思就是每一组端口都有8个位;转换成2进制为1111 1111,10进制为255,16进制为0xff,
比如我现在要让P1口全亮(高电平为亮),那么是不是P1^0到P1^7这个8个端口全部为1,那么就为:
P1 = 2#1111 1111;但是在keil软件中不可以用2进制表示,那么我们就用10进制或16进制来赋值,
P1 = 0XFF;
P1 = 255;
如果 P1 = 0X01,这个意思就是P1^0这个端口为1,其它的端口都为0;
你主要是进制没学好,回去复习下各种进制转换就好了.
2. C语言中表达式是如何运算的那些运算符什么意思
表达式在编译时,计算机是这么理解的,先把表达示全部压入栈内,然后再弹出,如果发现弹出的是运算符,则等到再弹出另一个运算符,比较两个运算符的优先级,如果前者优先或同级的话,则将运算符的前一个出栈数和后一个出栈数进行该运算符的运算,然后把运算结果入栈;如果优先级小的话,则再继续弹出栈顶元素.直到有一个运算符被运算,并且结果入栈,然后把未使用的出栈数和出栈运算符,按出栈的先后再次入栈(先出后入,后出先入).最后整个表达示得出结果.
这个过程一般被理解为按右结合.
比如表达示:
x=x*x+4^y+5+6+7
x=3;
则x的求值过程为:
x=4*4+4^2+5+13
x=x*x+4^2+18
x=x*x+34
x=9+34
x=43
赋值运算符的优先级一般最小,是最后计算的.所以得出43的值再赋值给x
-=,+=,*=,/=也算是赋值运算符,他们叫做复合运算符,和赋值运算符同一优先级,按右结合原则运算.
我再补充一点吧
以下全部引用自:(<<C语言编程宝典>>)
各个运算符:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
————————————————————————————
+ 加, 一目取正
- 减, 一目取负
* 乘
/ 除
% 取模
-- 减1
++ 加1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
—————————————————————————————
&& 逻辑与
|| 逻辑或
! 逻辑非
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
—————————————————————————————
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
————————————————————————————
& 位逻辑与
| 位逻辑或
^ 位逻辑异或
- 位逻辑反
>> 右移
<< 左移
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Turbo C运算符的优先次序
━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━
表达式 ┃优先级
————————————————————————————╂————
()(小括号) [](数组下标) .(结构成员) ->(指针型结构成员)┃ 最高
————————————————————————————┃ ↑
!(逻辑非) .(位取反) -(负号) ++(加1) --(减1) &(变量地址)┃ │
————————————————————————————┃ │
*(指针所指内容) type(函数说明) sizeof(长度计算) ┃ │
————————————————————————————┃ │
*(乘) /(除) %(取模) ┃ │
————————————————————————————┃ │
+(加) -(减) ┃ │
————————————————————————————┃ │
<<(位左移) >>(位右移) ┃ │
————————————————————————————┃ │
<(小于) <=(小于等于) >(大于) >=(大于等于) ┃ │
————————————————————————————┃ │
==(等于) !=(不等于) ┃ │
————————————————————————————┃ │
&(位与) ┃ │
————————————————————————————┃ │
^(位异或) ┃ │
————————————————————————————┃ │
|(位或) ┃ │
————————————————————————————┃ │
&&(逻辑与) ┃ │
————————————————————————————┃ │
||(逻辑或) ┃ │
————————————————————————————┃ │
?:(?表达式) ┃ │
————————————————————————————┃ │
= += -=(联合操作) ┃ │
————————————————————————————┃ │
,(逗号运算符) ┃ 最低
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3. 求C语言中各类运算符的高低级别要各种,全面的!
优先级 最大为1 最小为15
1 . [] () -> 从左向右结合
2 ++ -- * & ! ~ sizeof 从右向左一次结合 ( * 指针运算)
3 / * % (*为乘号) 从左向右结合
4 + - 从左向右结合
5 >> << 从左向右结合
6 <= >= < > 从左向右结合
7 == != 从左向右结合
8 & 从左向右结合
9 ^ 从左向右结合
10 | 从左向右结合
11 && 从左向右结合
12 || 从左向右结合
13 ?: 右向左一次结合
14 赋值运算符 如 = <<= += 等 右向左一次结合
15 逗号表达式 ,
4. C语言运算符与表达式问题
++x 是在本句中先将x的值+1,然后使用+1后的值
y++ 是先使用原值,然后在以后使用+1的值
这样在printf语句中 ++x即 4, y++为3
但是(++x,y++)是一个表达式,只能有一个值,这个值是3,因为取的是逗号运算符后的值作为整个表达式的值(逗号运算符的性质如此)
而z+2则作为临时变量值显然是3
所以出来了3,3
5. C语言 什么是表达式
C语言表达式的定义是:用C语言运算符将运算对象连接起来的式子,就叫表达式。
C语言在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。
当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。
基本构成:
数据类型:C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
常量与变量:常量其值不可改变,符号常量名通常用大写。
变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
数组:如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,中括号内的索引值是从0算起的。
指针:如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 *(此处特指单目运算符 * ,下同。C语言中另有 双目运算符 *) 则是取内容操作符,意思是取这个内存地址里存储的内容。指针是 C 语言区别于其他同时代高级语言的主要特征之一。
指针不仅可以是变量的地址,还可以是数组、数组元素、函数的地址。通过指针作为形式参数可以在函数的调用过程得到一个以上的返回值,不同于return(z)这样的仅能得到一个返回值。
字符串:C语言的字符串其实就是以'