> 唯美句子 > 已知s是字符型变量,下面不正确的赋值

已知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都是多少