已知s是字符型变量,下面不正确的赋值
已知s是字符型变量,下面不正确的赋值语句是( ).
s 实际上是1字节无符号整型。
B.s= ’u+v’; 单引号括起的是字符常量,只能是1个字符。u+v 有3个字符,所以错。
s=’\012’; 单引号括起的是8进制 转义字符 012, 正确。
s=’1’+’2’; 两个字符常量 相加 赋值 是允许的。
s=’\08’ 单引号括起的是8进制 转义字符 08 错,8 超界。
s=’\xde’; 单引号括起的是16进制 转义字符 0xde, 正确.
s=’abc’; 右边错。单引号括起的是字符常量,只能是1个字符, abc 有3个字符,所以错。
s=”\”; 双引号括起的是字符串,不是 1字节无符号整型,所以 错。
以下能正确进行字符串赋值,赋初值的语句组是()
B正确
A char[5]={'a' 'e' 'i' 'o' 'u'}; 没有终结符,不算字符串
B char *s;s="good!"; //定义一个字符指针,然后让这个指针指向常量字符串"good!",正确
C char s[5]="good!"; //"good!"有6个字符,s空间不够,会越界
D char s[5];s=“good"; //s是个数组名,是常量,不可以被赋值
若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句正确的是——C,请懂的童鞋帮忙解释一下
答案:c
【分析】
s是字符类型的二维数组、k是指向字符类型数组的指针(是数组指针)、p是字符类型的指针。
A)选项将二维数组赋值给了一个指针;
B)选项将指向一维数组的指针赋值给了一个指针
D)选项将二维数组赋值给了指向一维数组的指针。
故答案为C)。
也可这样分析:
p=s; s+1一次移动的是10个字节,p+1一次移动1个字节
p=k; 与上同理。
k=s k+1一次移动3个字节 ,s+1个字节
考虑下面的简单赋值语句的 S-属性翻译文法 ,在线等
(+,b,c,T1)
(+,d,c,T2)
(*.T1,T2,T3)
(:=,T3,0,a)
过程,翻译分析过程如下:
产生式 栈
a:=(b+c)*(d+c)# #
:=(b+c)*(d+c)# #a
(b+c)*(d+c)# #a:=
....
...
# #a:=(b+c)*(d+c)
若以下定义:char s[20],*ps=s; 则,以下赋值语句正确的是:
C
s与ps都为地址,故D不正确;
B没有意义,A可能越界
java:在jsp页面中<%%>定义了java变量,现在要给他赋值,如${xxxx},求解怎么才能把el表达式的值赋给它
c语言 char s【3】【10】,(*k)【3】,*p;则以下赋值语句正确的是 a)p=s
估计你应该是二维数组与指针分不清楚,分析如下:
char s[3][10]; //先看s[3],s包含3个元素的数组,即s为指向3个元素的指针,3个元素分别为s+0,s+1,s+2; 再看右边的[10],说明这个3个元素中,每个元素又包含10个元素,即(s+0)[0]、(s+0)[1]....(s+0)[9],(s+1)[0]、(s+1)[1]....(s+1)[9],(s+2)[0]、(s+2)[1]....(s+2)[9];从整体看s[3]为指针,即char*,s[3][10]为具体的值,即char。那么(s+0)[0]、(s+0)[1]....(s+0)[9],(s+1)[0]、(s+1)[1]....(s+1)[9],(s+2)[0]、(s+2)[1]....(s+2)[9];是具体的30个char;二维数组就是指向指针的指针,即char **s;
分析结果:
A. p=s; //错,p为指向char的指针,而s为指向指针的指针,char **;
B. p=k; //错,p为指向char的指针,而k为指向含有三个元素的数组,其实可k也是char **;
C. p=s[10]; //错,p为指向char的指针,s[10] (s+0)[10]是一个字符,但是s[10]越界了,所以这个也是错误的.
D. k=s; //错,看AB的分析,也许你认为是对的,都是char**,但是他们指向的元素不同,k指向的是包含3个元素的数值,而s指向的是包含10元素的数组,所以不正确.
总结:数组的名字就是首地址,分析指针或数组,通过优先级来分析.以上没有正确答案.
C语言中,逻辑表达式是一个赋值语句时候是真还是假while(*t=*s){t++;s++}什么时候执行?不执行?
赋值表达式的返回就是等号左边的值,也就是说
while(*t=*s) 的意思是将 *s赋值给*t,然后判断*t是真还是假。
到*s =0或*s='\0'的时候,这个循环就不成立,否则while循环成立。
下面各语句行中,能正确进行赋字符串操作的语句行是( )
选C。
A不用说了。
B是一个合法的“字符数组”初始化语句,但是不是一个正确的“字符串”赋值语句,因为字符串要求最后有字符串结束标志'\0'。
C对。"ABCDE"是一个字符串常量,它存储在静态数据区中。
D不对。这个语句跟下面这种情况类似:
int *p;
scanf("%d", p);
p是一个野指针,不能直接往p指向的内存空间中输入数据。对于这个题目来说,只能用:
char s[10];
scanf("%s", s);这种操作。
春季高职信息。赋值语句“s=s +1”的功能是什么
你这个是计算机的程序算法吧
比如我写一段程序(VB语言吧)
Dim S as integer
DIm I as integer
s=0
for i=1 to 100 step 1
s=s+i
next i
end sub
这是1到100求和程序
定义两个变量,就用两个内存块来存储他们,这两个内存空间是程序构建的
这两个空间里面可以存放符合类型的一切数字,是可以变化的.
s=s+i 的意思就是 在原来S的基础上再加上一个i,把新数值赋值给S
比如有这样一道题
a=1 …………此时a=1,b、c为初始值0
b=3 …………此时a=1,b=3,c为初始值0
a=a+b …………此时a=1+3=4 b=3 c为初始值0
c=a+1 …………此时a=4 b=3 c=4+1=5
c=c+a …………此时a=4 b=3 c=5+4=9
问 a、b、c都是多少
已知s是字符型变量,下面不正确的赋值:等您坐沙发呢!