C语言里面问号和冒号表达式的问题请教 (0x30& 0x20) ? 0x00 : 0x28 这样的表达式是什么意思啊?
8个回答
展开全部
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit SER=P2^0;
sbit RCK=P1^1;
sbit SRCK=P1^0;
sbit E2=P1^2;
sbit A0=P1^3;
sbit A1=P1^4;
sbit A2=P1^5;
sbit E1_3=P1^6;
uchar code table[30] [32]=
{
0x00,0x80,0x00,0x80,0xFC,0x80,0x04,0xFC,0x45,0x04,0x46,0x48,0x28,0x40,0x28,0x40,
0x10,0x40,0x28,0x40,0x24,0xA0,0x44,0xA0,0x81,0x10,0x01,0x08,0x02,0x0E,0x0C,0x04,
0x00,0x00,0x41,0x84,0x26,0x7E,0x14,0x44,0x04,0x44,0x04,0x44,0xF4,0x44,0x14,0xC4,
0x15,0x44,0x16,0x54,0x14,0x48,0x10,0x40,0x10,0x40,0x28,0x46,0x47,0xFC,0x00,0x00,
0x01,0x00,0x21,0x08,0x11,0x0C,0x09,0x10,0x09,0x20,0x01,0x04,0xFF,0xFE,0x04,0x40,
0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x40,0x08,0x42,0x10,0x42,0x20,0x3E,0x40,0x00,
0x10,0x80,0x10,0x80,0x51,0x04,0x51,0xFE,0x52,0x00,0x54,0x80,0x58,0x60,0x50,0x24,
0x57,0xFE,0x54,0x44,0x54,0x44,0x54,0x44,0x54,0x44,0x14,0x44,0x17,0xFC,0x14,0x04
};
void delay(uint z)
{
uchar x,y;
for (x=z;x>0;x--);
for(y=110;y>0;y--);
}
void Line_Ctrl (uchar line)
{
RCK=0;
_nop_();
_nop_();
switch(line)
{
case 0:A0=0;A1=0;A2=0;E1_3=1;break;
case 1:A0=1;A1=0;A2=0;E1_3=1;break;
case 2:A0=0;A1=1;A2=0;E1_3=1;break;
case 3:A0=1;A1=1;A2=0;E1_3=1;break;
case 4:A0=0;A1=0;A2=1;E1_3=1;break;
case 5:A0=1;A1=0;A2=1;E1_3=1;break;
case 6:A0=0;A1=1;A2=1;E1_3=1;break;
case 7:A0=1;A1=1;A2=1;E1_3=1;break;
case 8:A0=0;A1=0;A2=0;E1_3=0;break;
case 9:A0=1;A1=0;A2=0;E1_3=0;break;
case 10:A0=0;A1=1;A2=0;E1_3=0;break;
case 11:A0=1;A1=1;A2=0;E1_3=0;break;
case 12:A0=0;A1=0;A2=1;E1_3=0;break;
case 13:A0=1;A1=0;A2=1;E1_3=0;break;
case 14:A0=0;A1=1;A2=1;E1_3=0;break;
case 15:A0=1;A1=1;A2=1;E1_3=0;break;
}
E2=1;
RCK=1;
delay(25);
}
void wr_595(uint num,uchar t)
{
uchar j;
for(j=0;j<t;j++)
{
SRCK=0;
if((num&0x8000)==0x8000)
SER=1;
else
SER=0;
num<<=1;
SRCK=1;
}
SRCK=0;
}
void main()
{
uchar r,i,j;
uint h ,hh;
uchar p;
while(1)
{
for(r=0;r<16;r++)
{
hh=table[4+i] [j];
h=hh<<8;
h=h|table[4+i][16+j];
wr_595(h,r+1);
for(p=i;p<4+i;p++)
{
hh=table[p] [j];
h=hh<<8;
h=h|table[p][16+j];
wr_595(h,16);
}
Line_Ctrl(j);
}
i++;
if(i==26)
{
i=0;
}
}
}
最好把你调试过程中的问题描述下,这样看你的程序才能更有针对性。
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit SER=P2^0;
sbit RCK=P1^1;
sbit SRCK=P1^0;
sbit E2=P1^2;
sbit A0=P1^3;
sbit A1=P1^4;
sbit A2=P1^5;
sbit E1_3=P1^6;
uchar code table[30] [32]=
{
0x00,0x80,0x00,0x80,0xFC,0x80,0x04,0xFC,0x45,0x04,0x46,0x48,0x28,0x40,0x28,0x40,
0x10,0x40,0x28,0x40,0x24,0xA0,0x44,0xA0,0x81,0x10,0x01,0x08,0x02,0x0E,0x0C,0x04,
0x00,0x00,0x41,0x84,0x26,0x7E,0x14,0x44,0x04,0x44,0x04,0x44,0xF4,0x44,0x14,0xC4,
0x15,0x44,0x16,0x54,0x14,0x48,0x10,0x40,0x10,0x40,0x28,0x46,0x47,0xFC,0x00,0x00,
0x01,0x00,0x21,0x08,0x11,0x0C,0x09,0x10,0x09,0x20,0x01,0x04,0xFF,0xFE,0x04,0x40,
0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x40,0x08,0x42,0x10,0x42,0x20,0x3E,0x40,0x00,
0x10,0x80,0x10,0x80,0x51,0x04,0x51,0xFE,0x52,0x00,0x54,0x80,0x58,0x60,0x50,0x24,
0x57,0xFE,0x54,0x44,0x54,0x44,0x54,0x44,0x54,0x44,0x14,0x44,0x17,0xFC,0x14,0x04
};
void delay(uint z)
{
uchar x,y;
for (x=z;x>0;x--);
for(y=110;y>0;y--);
}
void Line_Ctrl (uchar line)
{
RCK=0;
_nop_();
_nop_();
switch(line)
{
case 0:A0=0;A1=0;A2=0;E1_3=1;break;
case 1:A0=1;A1=0;A2=0;E1_3=1;break;
case 2:A0=0;A1=1;A2=0;E1_3=1;break;
case 3:A0=1;A1=1;A2=0;E1_3=1;break;
case 4:A0=0;A1=0;A2=1;E1_3=1;break;
case 5:A0=1;A1=0;A2=1;E1_3=1;break;
case 6:A0=0;A1=1;A2=1;E1_3=1;break;
case 7:A0=1;A1=1;A2=1;E1_3=1;break;
case 8:A0=0;A1=0;A2=0;E1_3=0;break;
case 9:A0=1;A1=0;A2=0;E1_3=0;break;
case 10:A0=0;A1=1;A2=0;E1_3=0;break;
case 11:A0=1;A1=1;A2=0;E1_3=0;break;
case 12:A0=0;A1=0;A2=1;E1_3=0;break;
case 13:A0=1;A1=0;A2=1;E1_3=0;break;
case 14:A0=0;A1=1;A2=1;E1_3=0;break;
case 15:A0=1;A1=1;A2=1;E1_3=0;break;
}
E2=1;
RCK=1;
delay(25);
}
void wr_595(uint num,uchar t)
{
uchar j;
for(j=0;j<t;j++)
{
SRCK=0;
if((num&0x8000)==0x8000)
SER=1;
else
SER=0;
num<<=1;
SRCK=1;
}
SRCK=0;
}
void main()
{
uchar r,i,j;
uint h ,hh;
uchar p;
while(1)
{
for(r=0;r<16;r++)
{
hh=table[4+i] [j];
h=hh<<8;
h=h|table[4+i][16+j];
wr_595(h,r+1);
for(p=i;p<4+i;p++)
{
hh=table[p] [j];
h=hh<<8;
h=h|table[p][16+j];
wr_595(h,16);
}
Line_Ctrl(j);
}
i++;
if(i==26)
{
i=0;
}
}
}
最好把你调试过程中的问题描述下,这样看你的程序才能更有针对性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个意思是假如(0x30& 0x20)是一个真命题的话,执行的结果就是冒号前面的,即0x00,反之,假如(0x30& 0x20)是一个假命题的话执行后面的语句 即0x28, 不知道你懂了没有!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
譬如(10>20)?10:20 这个例子 如果10确实大于20那输出冒号左面的 那就是10了
很显然10<20所以输出冒号右边的 20
(表达式1>表达式2)?表达式1:表达式2 这是一个条件运算符 运算符中只有条件运算符是三元(三目)的
很显然10<20所以输出冒号右边的 20
(表达式1>表达式2)?表达式1:表达式2 这是一个条件运算符 运算符中只有条件运算符是三元(三目)的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询