Consider the following C statements:
char *str1 = "Hello; /* Statement S1 */
char *str2 = "Hello;"; /* Statement S2 */
int *str3 = "Hello"; /* Statement S3 */
Which of the following options is/are correct?
Step 1: Examine Statement S1: char *str1 = 'Hello; The string literal is opened with a double quote but never closed before the line ends. An unterminated string literal is a lexical error because the scanner cannot recognize a complete string-literal token.
Step 2: Examine Statement S2: char *str2 = 'Hello;'; Here the string literal is 'Hello;' (the semicolon inside the quotes is just a character of the string), properly closed with a quote, followed by the real terminating semicolon. This line has no lexical or syntactic problem; it simply initializes str2 with the text Hello;.
Step 3: Examine Statement S3: int *str3 = 'Hello'; The literal 'Hello' is a valid, well-formed string constant, so lexically and syntactically the statement is fine. However, a string literal has type char *, and it is being assigned to a variable of type int *. This type mismatch is a semantic error (most compilers issue a warning for the incompatible pointer type, and strict compilers reject it).
Step 4: Putting these together: S1 has a lexical error and S3 has a semantic error, which is exactly option C.
\[ \boxed{\text{Option C is correct}} \]
A schedule of three database transactions \(T_1\), \(T_2\), and \(T_3\) is shown. \(R_i(A)\) and \(W_i(A)\) denote read and write of data item A by transaction \(T_i\), \(i = 1, 2, 3\). The transaction \(T_1\) aborts at the end. Which other transaction(s) will be required to be rolled back?

In C runtime environment, which one of the following is stored in heap?
Consider the following three ANSI-C programs, P1, P2, and P3.
P1
P2
P3
#include <stdio.h>
int a=5;
int main(){
int a=7;
return(0);
}
#include <stdio.h>
int main(){
int a=5;
int a=7;
return(0);
}
#include <stdio.h>
int main(){
int a=5;
float a=7;
return(0);
}
Which one of the following statements is true?
Consider the following program in C:
#include <stdio.h>
void func(int i, int j) {
if(i < j) {
int i = 0;
while (i < 10) {
j += 2;
i++;
}
}
printf("%d", i);
}
int main() {
int i = 9, j = 10;
func(i, j);
return 0;
}
The output of the program is _________. (answer in integer)
Note: Assume that the program compiles and runs successfully.
Consider the following ANSI-C program.
#include <stdio.h>
int main(){
int *ptr, a, b, c;
a=5; b=11; c=20;
ptr=&a; *ptr=c; ptr=&c;
a=*(&b); c=*ptr-a;
printf("%d",c);
return(0);
}
The output of this program is ____________. (answer in integer)
Note: Assume that the program compiles and runs successfully.
Consider the following ANSI-C function.
int func(int start, int end){
int length=end+1-start;
if((length<1)||(start<0)||(end<0)){ return(0); }
if(length%3==0){
return(func(start+1, end));
} else if(length%3==1){
return(1+func(start, end-1));
} else {
return(func(start+2, end));
}
}
The maximum possible value that can be returned from this function is
____________. (answer in integer)
Note: Ignore syntax errors (if any) in the function.