short s1 = 1; s1 = s1 + 1;和 s1 += 1;

对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。

对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

时间: 2024-10-14 15:20:48

short s1 = 1; s1 = s1 + 1;和 s1 += 1;的相关文章

6、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?-Java面试题答案

先说一下Java的基本数据类型转换规则,大的数据类型转换为小的数据类型需要强制转换,反之可以自动转换. 赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样. 第一题:short s1 = 1; s1 = s1 + 1; 错! s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,即需要通过强制类型转换.正确写法:s1 = (short) (s1 + 1); 第二题:s

445. Add Two Numbers II ——while s1 or s2 or carry 题目再简单也要些测试用例

You are given two linked lists representing two non-negative numbers. The most significant digit comes first and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. You may assume the two numbers do not con

经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)

题目 Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one call to isSubstring ( i.e., "waterbottle" is a rotation of &qu

97. Interleaving String *HARD* -- 判断s3是否为s1和s2交叉得到的字符串

Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = "aabcc",s2 = "dbbca", When s3 = "aadbbcbcac", return true.When s3 = "aadbbbaccc", return false. class Solution { p

判断字符串s2能否由s1旋转得到

/* * 判断s2能否由s1旋转得到 * 已知isSunString函数,但只能调用一次 * 思路:s1=xy; s2=yx;令s1=s1+s1=xyxy;则s2必为s1的子串 */ import java.util.Scanner; public class RotateString { static boolean isSubString(String s1,String s2){ //也可以用KMP来判断,暂时写不出来额 for(int i=0;i<s1.length()/2;i++){

对于char *s1 和 char s2[] 的认识

对于char *s1 和 char s2[] 认识有误区(认为无区别),导致有时出现“难以理解”的错误. char *s1 = "hello"; char s2[] = "hello"; [区别所在] char *s1 的s1,而指针是指向一块内存区域,它指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会报错. char s2[]的s2 是数组对应着一块内存区域,其地址和容量在生命期里不会改变,只有数组的内容可以改

strncpy(char* s1,const char *s2,int n) 和 strchr(cosnt char *s,char c)

1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 char s1[10] = "abcd"; 6 char s2[10] = "ABCDEF"; 7 printf("s1 = %s\ns2 = %s\n",s1,s2); 8 strncpy(s1,s2,3); 9 printf("s1 = %s\ns2 = %s\n",s1,s2);

squeeze(s1,s2),将字符串s1中任何与字符串s2中匹配的字符都删除

void squeeze(char a[],char b[]) { //要实现把s2的任意字符如果出现的话就在s1中删除 //1.首先判断s1[j]==s2[i]&&s1[j]=='\0' int j,i; for( j=0;b[j]!='\0';j++)//遍历一遍b[] { for(i=0;a[i]!='\0';i++)//遍历一遍a { if(a[i]==b[j]) for(int m=i;(a[m]=a[1+m])!='\0';m++);//消除元素 } } } //其实里面那些{

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误.对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译.